如何防止 Box2D 中的传感器对象发生隧道
how to prevent tunneling on sensor objects in Box2D
我正在使用cocos2d和box2d制作iPad游戏。
在其他元素中,有一个快速移动的玩家对象和一堆静态线对象。 我希望线条能够检测到玩家何时越过它们,但不要像玩家对象或游戏中任何其他移动物体的墙一样。 所以我把线设置为传感器。
但是,Box2D用于快速移动物体碰撞检测的漂亮反隧道代码似乎不适用于设置为传感器的物体。 所以现在我的玩家对象直接穿过行,可能五分之一被检测到。
如何让 box2d 每次都检测越线的精灵,无论它的速度有多快?
编辑:我在box2D论坛上找到了这篇文章,有人遇到了类似的问题,并找到了可能的解决方案。 但是,我没有遵循如何实施解决方案。 也许它会帮助其他人,或者有人可以更清楚地解释这个人做了什么。 他们是这么说的:
好的,
我让它工作了。 有人在Box2D论坛上回应了一个解决方案,即使用光线投射而不是依赖内置的碰撞检测。 我能够在这个关于 RayWenderlich.com 的优秀教程中找到有关如何执行此操作的说明
出于我的目的,我只是从最后一帧开始计算精灵的速度,然后执行光线投射以查看它是否越过任何线条。 回调给出它交叉位置的 x,y 坐标。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- CMake-按正确顺序将项目与C运行时对象文件链接
- 空基优化子对象的地址
- 将对象数组的引用传递给函数
- 你能重载对象变量名本身返回的内容吗
- C++使用整数的压缩数组初始化对象
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 将对象移动到std::shared_ptr
- 代理对象的常量正确性
- 提升 ASIO 无法识别计时器对象
- 将Ref对象作为类成员
- 将包含C样式数组的对象初始化为成员变量(C++)
- 如何返回一个类的两个对象相加的结果
- 使用std::函数映射对象方法
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 构造对象的歧义
- 如何防止 Box2D 中的传感器对象发生隧道