gpt4 book ai didi

java - Libgdx Box2D 仅控制少数特定对象的碰撞响应

转载 作者:行者123 更新时间:2023-12-02 05:47:48 24 4
gpt4 key购买 nike

Box2d 中,据我所知,对象具有默认的碰撞响应,这可以让它们停止移动或反弹(如果您设置了恢复)。
您也可以说该对象是传感器,因此您可以实现自己的碰撞响应。
现在我想对某些类型的碰撞使用默认的碰撞响应,同时我想完全控制与特定对象的碰撞。
例如:如果玩家撞到墙壁,则应该停止移动或反弹,但如果撞到子弹,则应该失去 Hp,并且应该将子弹移走。
所以我想要类似接触过滤器的东西,但是与过滤器不匹配的对象应该以默认行为使用react。

这样的事情可能吗?
我怎样才能做到这一点?

谢谢

最佳答案

使用CollisionListener并检查您的装置/主体的用户数据的类型。然后你就可以随心所欲地处理它。如果您不希望玩家/子弹碰撞产生响应,您应该在 preSolve 中禁用 Contact (通过 Contact.setEnabled(false) )并标记要销毁的子弹.

在这种情况下,需要一个强大的碰撞处理系统。我创建了一个要点,展示了如何通过所谓的 CollisionHandler 来实现这一点。它们负责每种类型的 EntityA 与 EntityB 冲突。 CollisionFilter 已经可以预先过滤总共的碰撞,然后 CollisionListener 将确定正确的 CollisionHandler 并将回调转发给它们。它使用反射,可能不是处理大量物体和碰撞的最快方法,但到目前为止我没有遇到任何问题。

You can find the gist here.

关于java - Libgdx Box2D 仅控制少数特定对象的碰撞响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23884606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com