0
我的場景設置場景>世界:sknode
>相機:sknode
>船:SKSpriteNode
轉換點後爲什麼需要調整?
我想船指向觸摸的位置:
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
let touchLocation = touch.locationInNode(self)
let location = cameraNode.convertPoint(touchLocation, toNode: world)
moveCameraNode(CGPointsToVector(location, b: cameraNode.position))
let shipTouchPosition = scene?.convertPoint(touchLocation, fromNode: world)
let shipPosition = scene?.convertPoint(ship.position, fromNode: world)
let angle = atan2(shipTouchPosition!.y - shipPosition!.y, shipTouchPosition!.x - shipPosition!.x)
let magicNumber = CGFloat(M_PI_2)
ship.runAction(SKAction.rotateToAngle(angle - magicNumber, duration: 0.1, shortestUnitArc: true))
}
override func didFinishUpdate() {
centerOnNode(cameraNode)
}
func centerOnNode(node: SKNode) {
let cameraPositionInScene = node.scene?.convertPoint(node.position, fromNode: node.parent!)
node.parent!.position = CGPointsSubtract(node.parent!.position, b: cameraPositionInScene!)
}
所以,現在它工作正常,但我不知道爲什麼我需要的magicNumber.
編輯:感謝@mundi捕對我而言這是模糊我的真實的我在做什麼錯convertPoint問題一個愚蠢的錯誤,我要事後進行調整。
謝謝,我誤解並認爲'zRotation'和'atan2'是度數。這就是爲什麼當我第一次嘗試90時,它不起作用,但80年,這是非常接近的工作,我認爲這是一個「神奇的數字」。但我真正的問題是我爲什麼需要調整。 – MCB
對。我認爲真正的問題也得到了回答。 – Mundi