我使用Xcode 6、SpriteKit和Swift,
我有一个SKSpriteNode,它是新Xcode项目的默认空间映像。这艘宇宙飞船有一个物理体,但不受重力的影响,我想模拟这个空间。
我希望当我点击屏幕时,在节点上施加一种力,这样飞船就可以前进了。问题是,当飞船旋转时,我试着施加力,飞船就不会像我想要的那样前进,而是朝着力的方向前进,这是正常的。
我想知道是否有任何方法可以根据节点的zRotation向其施加力?因此,无论是在哪个方向的飞船,它都会继续前进。
发布于 2015-02-27 18:19:43
我现在不能试一试,但它应该有效:
// grab the spaceship rotation and add M_PI_2
var spaceShipRotation : CGFloat = spaceShipNode.zRotation
var calcRotation : Float = Float(spaceShipRotation) + Float(M_PI_2);
// cosf and sinf use a Float and return a Float
// however CGVector need CGFloat
let intensity : CGFloat = 10.0 // put your value
let xv = intensity * CGFloat(cosf(calcRotation))
let yv = intensity * CGFloat(sinf(calcRotation))
let vector : CGVector = CGVectorMake(xv, yv)
// apply force to spaceship
spaceShipNode.physicsBody?.applyForce(vector)
你必须学习数学,或者更精确地使用三角学,其中包括: PI,cos,sin,.我不太适应所有这些,尤其是现在没有尝试,但正如我已经告诉过的那样,它应该是有效的。让我知道!
https://stackoverflow.com/questions/28771058
复制相似问题