Ios 向SKNode应用一个脉冲,以在屏幕上移动并检测碰撞

Ios 向SKNode应用一个脉冲,以在屏幕上移动并检测碰撞,ios,sprite-kit,skphysicsbody,sknode,skphysicsworld,Ios,Sprite Kit,Skphysicsbody,Sknode,Skphysicsworld,我正在制作一个基本的应用程序,将形状推过屏幕,并检测与精灵套件的碰撞。我的第一次尝试是在节点上使用moveTo。我遇到的问题是碰撞,物体会彼此旋转而不是反弹 因此,我发现我需要使用applyForce或applyImpulse 在这种情况下,我有一个圆圈,例如,它的位置离屏幕在其生命的开始。然后,我们确定一个目标退出点,并希望在该方向上“轻弹”/“推”节点 我不知道如何将脉冲施加到作为CG点的目标末端位置。我需要得到一个CGVector,但我不知道需要做什么。我环顾四周,发现了一些Ray Tut

我正在制作一个基本的应用程序,将形状推过屏幕,并检测与精灵套件的碰撞。我的第一次尝试是在节点上使用
moveTo
。我遇到的问题是碰撞,物体会彼此旋转而不是反弹

因此,我发现我需要使用
applyForce
applyImpulse

在这种情况下,我有一个圆圈,例如,它的位置离屏幕在其生命的开始。然后,我们确定一个目标退出点,并希望在该方向上“轻弹”/“推”节点


我不知道如何将脉冲施加到作为CG点的目标末端位置。我需要得到一个CGVector,但我不知道需要做什么。我环顾四周,发现了一些Ray Tut,但它们只是显示applyForce或moveTo。我不知道该怎么计算

可以通过手动更改x和y位置来移动对象,以便到达终点。在更新功能中,如果我正确理解了您的问题,您可以更改
yourObject.position.x
yourObject.position.y
。如果没有,请更加明确。希望能有所帮助。

我找到了一个能很好地解释二维物理的网站。


有了这个,我计算出了角度需要是什么,并且有一个我可以控制的速度,它工作得很好。

我认为我是明确的:)我知道我可以移动x和y的位置,我可以使用moveTo,但这对碰撞不起作用。所以我需要对物体施加一个冲量,但无法计算出如何确定dx和dyOh,我会尝试找出它。你是在问dx和dy的值是多少,以及它们是如何工作的吗?好的,简而言之,我要问的是。。。我有一个起点和一个终点。我想将该节点(通过applyImpulse)移向目标点。所以我想向目标端点施加脉冲,如果它在改变方向的过程中碰撞到任何物体。但是我不知道如何得到applyImpulse方法从两个点(起点、目标终点)得到的CGVector。这可能就是你想要的。是的,我也发现了,但不幸的是没有。如果您查看该答案中的rayW链接,Swift实现将不再使用applyImpulse,而是使用moveTo。moveTo在发生碰撞时不会移动的情况下可以正常工作,但在这种情况下它不会……基本上,您会像这样将脉冲应用到节点的物理体[myNode.physicsBody applyImpulse:CGVectorMake(10,10)];这会将节点向上推到右侧。如何计算dx,dy的精确值是一个数学函数,可以通过谷歌搜索。