Sprite Kit - 在给定滑动手势的情况下为SKSpriteNode创建拱形路径

Mik*_*ike 2 animation ios xamarin sprite-kit

我正在制作一个简单的游戏,用户向上滑动一个物体(SKSpriteNode)以拱形运动上下发送它(使用我假设的SKAction).这是我希望完成的视觉效果(请原谅我的基本Pixelmator技能):

拱形运动中的物体路径

我已经创建了一个SKAction,它向上发送对象并根据速度等计算滑动的最终点.但是,我无法弄清楚如何在达到最终点时发生拱形运动,也不会回落到底部.屏幕.我希望我可以为对象添加重力,Sprite Kit将处理对象的移动,但从我最初的发现来看似乎并非如此.

我在这里发布了我当前的代码:

https://github.com/mikeberlin/Swipe-Arch-PoC

该应用程序基于本教程:

http://www.raywenderlich.com/44270/sprite-kit-tutorial-how-to-drag-and-drop-sprites

代码用Xamarin/C#编写,但几乎与Objective-C等价.如果您需要/希望我将其转换为Objective-C,我当然可以.

谢谢大家的帮助,如果我能提供更多信息,请告诉我.

doc*_*tor 5

听起来就像现在一样,你可能会陷入僵局,你可以在游戏中使用物理引擎.如果您使用物理引擎,游戏中的移动看起来会更加自然.使用它的缺点是需要更多的工作来实现,Sprite Kit物理引擎有时可能是粗略的.以下是两个选项的大致轮廓:

如果你想坚持使用SKAction而不使用物理引擎,你可以创建一个UIBezierPath并使用[SKAction followPath:[curveName CGPath]移动你的精灵.Bezier曲线看起来令人生畏,但是一旦你掌握了它,它们就会非常简单易用.如果你要走这条路,我建议先看一下维基百科文章中的图片.

但是,如果你选择使用它,你将无法为对象添加重力(尽管如果你操纵动作的timingMode属性,你可能会笨拙地模拟它.)为此,你必须使用物理引擎(为了避免重新发明轮子.)如果您之前没有使用过Sprite Kit的物理引擎,Apple的Sprite Kit编程指南就有一个简单的例子.

要使用物理引擎完成您想要的任务,您需要知道一点触发并至少完成以下步骤:

  • 如果您不关心滑动的确切角度和速度,我们UISwipeGestureRecognizer可以抓住滑动.
  • 否则,请使用touchesBegan,, touchesMovedtouchesEnded函数来计算必须应用的推力方向
  • touchesMoved和之间使用计时器touchesEnded来计算滑动的速度.
  • 使用applyForce并可能applyTorque移动你的物理身体.
  • 修补物理体的质量和形状,让它按照你想要的方式移动

祝你开发游戏好运!