Я делаю игру и очень плохо знаком с программированием, и я не могу понять, почему мой узел начинается под другим углом, чем просто 90 градусов, и смотрю вверх.
Этот узел является капотом танка, он вращается и запускает ракеты при касании экрана. Единственная проблема заключается в том, что изначально, когда я запускаю код, положение ЗАПУСКА капота не смотрит прямо вверх (90 градусов), вместо этого он смотрит куда-то влево (180 градусов).
У меня есть попытался перейти на xcassets и повернуть изображение так, чтобы оно поворачивалось вправо, а не прямо, и это только ухудшало ситуацию. Я также перепробовал много разных вещей для zRotation, но потом все перепуталось там, где ракеты go и все вращения.
Все работает, кроме начальной позиции моего узла, не равной 90 градусам.
func tankHood() {
hood.position = player.position
hood.setScale(1)
hood.zPosition = 3
self.addChild(hood)
}
func rotateHood() {
let radians = atan2(fingerLocation.x - hood.position.x, fingerLocation.y - hood.position.y)
hood.zRotation = -radians
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch: AnyObject in touches{
fingerLocation = touch.location(in: self)
let missilez = SKSpriteNode(imageNamed: "missilez.png")
missilez.zPosition = -5
missilez.setScale(1.8)
missilez.position = CGPoint(x: hood.position.x, y: hood.position.y)
missilez.zRotation = hood.zRotation
missilez.zPosition = 2
let action = SKAction.move(to: CGPoint(
x: 1600 * -cos(missilez.zRotation - 1.57079633) +
missilez.position.x,
y: 1600 * -sin(missilez.zRotation - 1.57079633) +
missilez.position.y
),
duration: 1.1)
let actionDone = SKAction.removeFromParent()
missilez.run(SKAction.sequence([missilezSound, action, actionDone]))
missilez.physicsBody = SKPhysicsBody(rectangleOf: missilez.size)
missilez.physicsBody?.affectedByGravity = false
missilez.physicsBody?.isDynamic = false
self.addChild(missilez)
}
}