确定物体是否发生碰撞 - Cocos2d/Box2D

发布于 2024-12-05 02:41:03 字数 148 浏览 0 评论 0原文

是否可以确定 b2body 是否与不同层的另一个 b2body 发生碰撞?另外,我该怎么做?

EG

我的主游戏场景层上有一个球,它向我的第一层中的炸弹发射。他们相撞,炸弹消失了。

如果我需要更清楚,请告诉我

,谢谢!

Is it possible to determine if a b2body has collided with another b2body from a different layer? Also, how would I do that?

E.G.

I have a ball on my main game scene layer that is fired at a bomb in my level one layer. They collide and the bomb disappears.

Please let me know if I need to be more clear

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

只涨不跌 2024-12-12 02:41:03

如果您希望物体发生碰撞,它们必须属于同一个 b2World。它们在哪一层上绘制以及如何绘制对于物理学来说并不重要。要确定碰撞何时发生,子类 b2ContactListener 并实现回调函数:

class MyContactListener : public b2ContactListener
{
public:
MyContactListener() : b2ContactListener() {}

void    BeginContact (b2Contact *contact);
void    EndContact (b2Contact *contact);
void    PreSolve (b2Contact *contact, const b2Manifold *oldManifold);
void    PostSolve (b2Contact *contact, const b2ContactImpulse *impulse);

};

然后将此类的对象添加到您的 b2World:

MyContactListener *listener = new MyContactListener();
world->SetContactListener(listener);

If you want bodies to collide they must belong to the same b2World. On what layer they are drawn and how does not matter to the physics. To determine when collision happens subclass b2ContactListener and implement callback functions:

class MyContactListener : public b2ContactListener
{
public:
MyContactListener() : b2ContactListener() {}

void    BeginContact (b2Contact *contact);
void    EndContact (b2Contact *contact);
void    PreSolve (b2Contact *contact, const b2Manifold *oldManifold);
void    PostSolve (b2Contact *contact, const b2ContactImpulse *impulse);

};

then add the object of this class to your b2World:

MyContactListener *listener = new MyContactListener();
world->SetContactListener(listener);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文