文章目录
  1. 1. 获取参与碰撞的刚体
    1. 1.1. m_contactList
    2. 1.2. GetContactList
    3. 1.3. 返回总目录

本节主要介绍获取参与碰撞的刚体。

获取参与碰撞的刚体


m_contactList

m_contactList的类型是b2ContactNode,取得附加在该物体上的碰撞表,所有碰撞都保存在这个列表里。
同ShapeList相比,ShapeList保存的是世界中所有的形状,而contactlist保存的是参与碰撞的形状。

1
2
3
4
5
6
7
8
9
10
11
12
13
function getContactInf() {
for (var b = world.m_contactList; b; b = b.m_next)
// 遍历contactlist所有世界,直到b不存在,跳出循环
{
// 将b里的两个刚体分别定义为b1和b2
var b1 = b.m_shape1.m_body;
var b2 = b.m_shape2.m_body;

// 向下执行的条件是b1和b2不同,且不是三面挡板(BodyTop/BodyLeft/BodyRight)
if ((b1 != Body2) && (b1 != BodyTop) && (b1 != BodyLeft) && (b1 != BodyRight) && (b2 != Body2) && (b2 != BodyTop) && (b2 != BodyLeft) && (b2 != BodyRight)){}
// 备注:得到了参与碰撞的刚体,则可以对其中的所有刚体的操作,这个发挥的空间留给游戏开发过程
}
}

GetContactList

GetContactList其实与上面的作用效果一样,而且其判断接触的逻辑思路也是一致的。

1
2
3
4
5
6
7
8
9
for (var cn = world.GetContactList(); cn != null; cn = cn.GetNext()) {
var body1 = cn.GetShape1().GetBody();
var body2 = cn.GetShape2().GetBody();

// 处理判断发生碰撞的两个刚体是不是分别为箱子和墙壁
if ((body1 == box && body2 == wall) || (body2 == box && body1 == wall)){
// 进行逻辑处理
}
}

返回总目录

码生艰难,写文不易,给我家猪囤点猫粮了喵~

B站: 被删

查看Github有更多内容噢:https://github.com/godbasin
更欢迎来被删的前端游乐场边撸猫边学前端噢

如果你想要关注日常生活中的我,欢迎关注“牧羊的猪”公众号噢

作者:被删

出处:https://godbasin.github.io

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

文章目录
  1. 1. 获取参与碰撞的刚体
    1. 1.1. m_contactList
    2. 1.2. GetContactList
    3. 1.3. 返回总目录