Почему мой SKSpriteNode запускается под странным углом, когда я запускаю свой код? - PullRequest
0 голосов
/ 18 апреля 2020

Я делаю игру и очень плохо знаком с программированием, и я не могу понять, почему мой узел начинается под другим углом, чем просто 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)
          }
          }
...