根据 Swift 中的触摸正确移动 Sprite
Posted
技术标签:
【中文标题】根据 Swift 中的触摸正确移动 Sprite【英文标题】:Moving Sprite properly based on the touch in Swift 【发布时间】:2017-12-02 23:32:20 【问题描述】:我有一个非常简单的应用程序。我有从天上掉下来的方块,它们是物理物体。当用户点击一个正方形时,它会跳起来。他需要防止水果接触地面。
现在我想在触摸苹果时,只需移动它的position.y += 10
。但我希望苹果也能在不同的 x 方向上跳跃,但我不知道如何实现。
例如,当我触摸正方形的左下边缘时,它不仅应该向上跳,而且还应该向右跳。
任何想法如何实现这一转变为 swift ?
【问题讨论】:
检查这个答案并告诉我***.com/questions/38016756/… 谢谢,但不是我要找的。我正在尝试像玩足球一样“踢”精灵节点。 【参考方案1】:由于您已经拥有 PhysicsBodies,因此您可以使用 applyImpulse(_:,at:) 在触摸时对对象应用“凹凸”。将矢量设置为向上,将位置设置为触摸的位置(在对象的坐标中)。
或者,要获得更多控制,请使用applyImpulse(_:),将脉冲矢量设置为大部分向上,并根据触摸的 X 位置向左或向右偏移,以向左或向右推动您正在寻找的方向。然后,为了获得更多的真实感,您可以同时applyAngularImpulse(_:) 给它一些旋转。
【讨论】:
不是我想要的。想象一下我有一个球。当您恰好在中间触摸它时,它会笔直向上颠簸。但是当你在左下角触摸它时,它会稍微向右碰撞,因为你在左下角“踢”了它。使用 applyImpulse 有助于提升它,但只能直接向上。而且我想避免只使用偏左或偏右的dy:
,因为它应该根据您触摸的底角跳到一边。但非常感谢您的付出,先生。
@JushKillaB 你没有正确使用 applyimpulse。使用 atan2 计算您触摸的点与球心之间的角度,然后使用 vector = x: m * cos(angle), y: m* sin(angle) (假设 0 度位于右侧x 轴的),其中 m 是你的力的大小以上是关于根据 Swift 中的触摸正确移动 Sprite的主要内容,如果未能解决你的问题,请参考以下文章