为什么我的弹跳球穿过地面?
我正在使用SpriteKit物理引擎进行小型弹跳球游戏。 我的问题是:
当我在弹跳球上施加一个巨大的冲动使它快速落地时,有时它可能穿过地面(非常薄,高度= 2)。
我在Apple文档中找到了这个,但它不起作用。
为小型或快速移动物体指定高精度碰撞当Sprite Kit执行碰撞检测时,它首先确定场景中所有物理实体的位置。 然后确定是否发生冲突或联系。 这种计算方法很快,但有时会导致错过碰撞。 一个小身体可能会移动得太快,以至于它完全穿过另一个物理体,而没有一个动画帧,两个帧之间相互接触。
如果你有碰撞的物理实体,你可以提示Sprite Kit使用更精确的碰撞模型来检查交互。 这个模型比较昂贵,所以应该谨慎使用它。 当任何一个身体使用精确的碰撞时,多个移动位置被接触并测试以确保所有接触被检测到。
ship.physicsBody.usesPreciseCollisionDetection = YES;
你可以设置你的精灵的node.physicsBody.usesPreciseCollisionDetection = YES;
但是这并不能保证所有时间都会出现碰撞标志,因为你的精灵速度可能太高了。
您应该对节点应用速度限制以防止它们变得过快。 像这样的东西:
if(node.physicsBody.velocity.dx > 200)
node.physicsBody.velocity = CGVectorMake(200, node.physicsBody.velocity.dy);
上面的代码示例将限制节点的正确运动dx为200,同时保持dy(上/下)速度。
链接地址: http://www.djcxy.com/p/66173.html