SpriteKit用物理而不是更新位置来移动节点

时间:2017-06-11 07:41:21

标签: swift sprite-kit

我的主角通过触摸并按住他然后向左或向右移动手指来移动角色。为此,我只需使用触摸位置的x位置更新touchesMoved()中节点的x位置(在平面上左右摆动),然后根据移动的方向应用动画。

我想把它提升到一个新的水平并达到同样的效果,但是使用物理学,这样当我完成移动他并释放我的手指时,他可能会朝着他移动的方向滑动一点点如果这是有意义的,我会按照他的速度移动他。有谁知道我怎么能达到这个效果?

我是否必须像我现在一样做并在移动时更新位置,同时还应用力/冲动?对如何处理这个问题感到困惑

1 个答案:

答案 0 :(得分:1)

通过力,冲动或速度移动物理体将自动更新玩家位置。

因此,您必须以正确的方式来实现目标。但基于此,我建议您使用touchesMoved中的.position代码替换.physicsBody!.velocity代码。然后,在你的touchesEnded上,你可以施加一点冲动,给予玩家一点点“冰上”效果,让他们保持一点点。

你需要试验一下你想让角色以正确的速度移动多少速度,然后你需要使用冲动数字才能使它恰到好处。

这可能会有点棘手,但是在touchesMoved中......因为在某些时候你会想要将速度重置为0(所以当你的手指停止时它们会停止移动)。

为此,您需要使用previousLocation对象中的。touch,并比较移动的X的距离。如果移动的距离X> 0(或一些死区阈值)则应用速度;如果deltaX为0,则将速度设置为0。

这实际上可能比仅使用.position移动角色更复杂,然后让角色在touchesEnded上滑动一点物理。

你必须玩它才能做到正确。