在levelhelper中使用的是“子弹”属性是什么?此外,在像愤怒的小鸟一样的游戏中, 这些鸟在春天重装......如何保持计数?以及如果我使用levelhelper制作愤怒的小鸟,如何在春天重新加载子弹。
答案 0 :(得分:1)
来自box2d手册http://www.box2d.org/manual.html
<强>子弹强>
游戏模拟通常会生成一系列以某种帧速率播放的图像。这称为离散模拟。在离散模拟中,刚体可以在一个时间步长中移动大量。如果物理引擎不考虑大运动,您可能会看到一些对象错误地相互穿过。这种效应称为隧道效应。
默认情况下,Box2D使用连续碰撞检测(CCD)来防止动态物体穿过静态物体。这是通过将形状从旧位置扫到新位置来完成的。引擎在扫描期间寻找新的碰撞并计算这些碰撞的撞击时间(TOI)。身体被移动到他们的第一个TOI,然后在剩余的时间步骤停止。
通常情况下,动态物体之间不使用CCD。这样做是为了保持合理的性能。在某些游戏场景中,您需要使用动态物体来使用CCD。例如,您可能想要在一堆动态砖块上拍摄高速子弹。没有CCD,子弹可能穿过砖块。
Box2D中快速移动的物体可以标记为子弹。子弹将使用静态和动态物体执行CCD。你应该根据你的游戏设计决定哪些机构应该是子弹。如果您决定将身体视为子弹,请使用以下设置。
bodyDef.bullet = true;
子弹标志只影响动态物体。
Box2D按顺序执行连续碰撞,因此子弹可能会错过快速移动的物体。