【发布时间】:2015-02-24 18:13:04
【问题描述】:
我正在使用 Sprite Kit(及其物理引擎)开发一款益智平台游戏。我的玩家的物理体由一个覆盖大部分精灵的大碰撞箱和一个固定在碰撞箱底部的带有销接头的轮子组成。向轮子添加了旋转,以使玩家在屏幕上移动。
我需要知道玩家是在地上,还是从壁架上掉下来;我知道如何检查物理身体接触,但是否可以检查是否没有接触(即当车轮离开地面时)?我不能依赖比较最后一帧的 Y 位置,因为玩家攀爬的表面是倾斜的。
【问题讨论】:
我正在使用 Sprite Kit(及其物理引擎)开发一款益智平台游戏。我的玩家的物理体由一个覆盖大部分精灵的大碰撞箱和一个固定在碰撞箱底部的带有销接头的轮子组成。向轮子添加了旋转,以使玩家在屏幕上移动。
我需要知道玩家是在地上,还是从壁架上掉下来;我知道如何检查物理身体接触,但是否可以检查是否没有接触(即当车轮离开地面时)?我不能依赖比较最后一帧的 Y 位置,因为玩家攀爬的表面是倾斜的。
【问题讨论】:
您可以使用didEndContact:(SKPhysicsContact *)contact 检查车轮是否不再接触地面。与 didBeginContact:(SKPhysicsContact *)contact 相同的主体,只是相反。
【讨论】:
didEndContact 会在玩家离开瓷砖时触发(无论他们是否移动到另一个“地面”瓷砖)。我现在使用physicsWorld.bodyAlongRayStart() 检查玩家左右角下方的物理预兆,以检测玩家是否站在地面上。