精灵套件冲动点

时间:2015-01-07 18:13:16

标签: swift sprite-kit game-physics

example image

我试图在宇宙飞船上使用两个点来创造一个“坦克般的运动”,当两个点在physicsBody上产生冲动时,太空飞船会向前移动(使用applyImpulse(CGVector, atPoint: CGPoint)当只有一个点产生冲动时,左/右转。

我可以使用applyImpulse(CGVector)方法向前移动太空飞船而不使用atPoint参数,但它可以正常工作,但我在使用atPoint参数时遇到了问题。

当试图使用atPoint参数时,即使我对喷气发动机1和喷气发动机2施加冲动,飞船也会随机移动,但是我不确定我是否在正确的位置施加了力(在在图像上标注了喷气发动机点,文档对此非常模糊,我不知道如何正确地获得冲动的位置。

有谁知道如何获得正确的位置来应用冲动?它应该像图像上的那些。我正在使用Swift,但我可以阅读Objective C,因此这并不重要。

编辑: 我尝试了以下几点:

CGPoint(x: 0, y: 0) and CGPoint(x: 1, y: 0)    
CGPoint(x: 0, y: 0) and CGPoint(x: spaceship.size.width, y: 0)    

2 个答案:

答案 0 :(得分:5)

查看文档时,应用脉冲的点必须位于场景坐标中。这意味着,您需要确定精灵坐标中的点(可能是CGPoint(x: 0, y: 1)CGPoint(x: 0, y: -1)之类的坐标,但您可能需要使用这些坐标),然后使用这些坐标转换为场景坐标convertPoint(point, fromNode: ship)

答案 1 :(得分:0)

这样做的方法(可能)会给你一个更“逼真”的阻力和推力结果就是将两个发动机机体悬挂在你的战斗机上,然后给它们提供阻力特性,并在需要时从它们施加推力,根据需要。

通过这种方式,您将获得一个引擎处于打开状态而另一个处于关闭状态时常见的旋转类型等。