2017-12-02 183 views
0

我有一个非常简单的应用程序。我有从天而降的广场,这是物理实体。当用户点击一个正方形时,它会跳起来。他需要防止水果接触地面。基于Swift中的触摸正确地移动Sprite

现在我想,当触摸苹果时,只需移动它的position.y += 10。但我希望苹果能够在不同的x方向上跳起来,我不知道如何实现这一点。

例如,当我触摸广场的左下角时,它不仅应该跳起来,而且还应该向右跳。

任何想法如何实现这个移动到迅速?

+0

检查此答案,并让我知道https://stackoverflow.com/questions/38016756/swift-spritekit-rotate-sprite-in-the-direction-of-touch/38017316#38017316 –

+0

谢谢你,但不是我正在寻找。我试图“踢”spirte节点,就好像你会耍一个足球一样。 –

回答

3

由于您已经拥有PhysicsBodies,因此您可以使用applyImpulse(_:,at:)在触摸时将“凹凸”应用于对象。将矢量设置为向上,将位置设置为触摸位置(在对象的坐标中)。

或者,对于更多控制,请使用applyImpulse(_:),根据触摸的X位置将冲动向量设置为大致向上,并向左或向右偏移,以使其向左或向右推动您正在寻找的位置。那么为了增加真实感,你可以在applyAngularImpulse(_:)的同时给它一些旋转。

+0

不完全是我在找的东西。想象一下我有一个球。当你正好在中间触摸它时,它会直线上升。但是当你在左下角触摸它时,它会稍微撞到右侧,因为你在左下角“踢”它。使用applyImpulse帮助碰撞,但只是直线上升。我想避免仅仅使用偏向左侧或右侧的'dy:',因为它会根据你触摸的底角跳到一侧。但非常感谢你的负担先生。 –

+0

@JushKillaB你没有正确使用applyimpulse。使用atan2来计算你正在接触的点和球的中心之间的角度,然后使用矢量= x:m * cos(角度),y:m * sin(角度)(假设0度位于右边部分的x轴)其中m是你的力量的大小 – Knight0fDragon