如何消除 box2d 中碰撞物体的反弹?

发布于 2024-08-22 05:11:32 字数 158 浏览 5 评论 0原文

当两个对象发生碰撞时,我试图删除 box2d 中的对象。

当我的两个物体发生碰撞时,其中一个物体会从另一个物体上弹开。它确实删除了另一个对象,但我希望它看起来像是经过而不是反弹。

我将 body Def 类型设置为 b2_staticBody

I am trying to delete an object in box2d when two objects collide.

When my two objects do collide, one of the object bounces off the other. It does delete the other object, but I want it to make it look like it went through rather than a bounce.

I have my body Def type set to b2_staticBody.

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

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

发布评论

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

评论(1

忘年祭陌 2024-08-29 05:11:32

您应该将身体的固定装置设置为传感器:

fixture->SetSensor(true);

然后创建一个接触侦听器 (class MyContactListener : public b2ContactListener),用于检测 BeginContact 方法中的碰撞并检查碰撞对象之一是否属于这种特殊对象种类。一个好的方法是使用这两种方法:

/// Get the user data pointer that was provided in the body definition.
void* GetUserData() const;

/// Set the user data. Use this to store your application specific data.
void SetUserData(void* data);

您需要对 C++ 有一点熟悉才能实现这一点。

You should set the body's fixture to be a sensor:

fixture->SetSensor(true);

You then create a contact listener (class MyContactListener : public b2ContactListener) that detects collisions in the BeginContact method and checks if one of the colliding objects is of this special kind. A good way of doing that is by using these two methods:

/// Get the user data pointer that was provided in the body definition.
void* GetUserData() const;

/// Set the user data. Use this to store your application specific data.
void SetUserData(void* data);

You need to be a bit familiar with C++ to pull it off.

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