Sprite 套件脉冲在点
Sprite kit impulse at point
我正在尝试使用 space 飞船上的两个点来创建一个 "tank like movement",如果 space 飞船在两个点都受到 physicsBody
(使用applyImpulse(CGVector, atPoint: CGPoint)
方法),当只有一个点得到脉冲时转left/right。
我可以使用不带 atPoint
参数的 applyImpulse(CGVector)
方法将 space 船向前移动并且它有效,但我在使用 atPoint
参数时遇到问题。
当尝试使用 atPoint 参数时,space船将真正随机移动,即使我对喷气发动机 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)
查看文档,您施加脉冲的点必须在场景坐标中。这意味着,您需要确定精灵坐标中的点(可能是 CGPoint(x: 0, y: 1)
和 CGPoint(x: 0, y: -1)
之类的坐标,但您可能需要使用这些坐标),然后使用将它们转换为场景坐标convertPoint(point, fromNode: ship)
.
一种(可能)会给你带来更多"realistic"阻力和推力结果的方法是将两个发动机机体悬挂在你的战斗机上,并赋予它们两种阻力特性,并从需要时,按需使用。
通过这种方式,您将获得一个引擎开启而另一个引擎关闭等常见的旋转类型。
我正在尝试使用 space 飞船上的两个点来创建一个 "tank like movement",如果 space 飞船在两个点都受到 physicsBody
(使用applyImpulse(CGVector, atPoint: CGPoint)
方法),当只有一个点得到脉冲时转left/right。
我可以使用不带 atPoint
参数的 applyImpulse(CGVector)
方法将 space 船向前移动并且它有效,但我在使用 atPoint
参数时遇到问题。
当尝试使用 atPoint 参数时,space船将真正随机移动,即使我对喷气发动机 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)
查看文档,您施加脉冲的点必须在场景坐标中。这意味着,您需要确定精灵坐标中的点(可能是 CGPoint(x: 0, y: 1)
和 CGPoint(x: 0, y: -1)
之类的坐标,但您可能需要使用这些坐标),然后使用将它们转换为场景坐标convertPoint(point, fromNode: ship)
.
一种(可能)会给你带来更多"realistic"阻力和推力结果的方法是将两个发动机机体悬挂在你的战斗机上,并赋予它们两种阻力特性,并从需要时,按需使用。
通过这种方式,您将获得一个引擎开启而另一个引擎关闭等常见的旋转类型。