Определение скорости узла SKSprite относительно родительского (не вида / сцены)

#ios #swift #sprite-kit #skphysicsbody

#iOS #swift #sprite-kit #skphysicsbody

Вопрос:

Я использую SpriteKit в Swift (3.0).

Я сохраняю все узлы SKSprites в моей игре как дочерние узлы узла «world»

Однако, когда я применяю скорость к одному из этих узлов, они перемещаются относительно экрана, а не «мира» (мир вращается, движется и т.д.)

Вот как я это реализую:

     let movingObject = SKSpriteNode(color: UIColor.green, size: CGSize(width: 10, height: 10))
    movingObject.physicsBody = SKPhysicsBody(rectangleOf: movingObject.size)
    movingObject.physicsBody?.velocity = CGVector(dx: 0, dy: 200)
    world.addChild(movingObject)
  

Мне нужна скорость моего узла для перемещения относительно его родительского узла, а не сцены / представления, в котором он находится. Как мне это сделать?

Спасибо!

Комментарии:

1. Это может не сильно помочь, но вы могли бы сохранить свой мир неподвижным и все объекты относительно этого мира и использовать камеру, чтобы создать у игрока впечатление вращения и движения.

2. @Confused спасибо, но, насколько мне известно, в Swift нет реализации узла «камеры». В документации Apple они предлагают вам создать узел «world» и перемещать / поворачивать его, чтобы создать иллюзию камеры.

3. В swift есть узел камеры — он называется SKCameraNode. В Интернете есть другие учебные пособия о том, как его использовать, и это полезная вещь.

4. @claassenApps Как я об этом не знал! Когда вы просматриваете его в документации Apple, он предлагает вам создать мировой узел. Спасибо

5. @claassenApps после прочтения имплиментации cameraNode developer.apple.com/reference/spritekit/skcameranode похоже, мой игровой мир все равно будет перемещен? Остается ли скорость относительно камеры?