#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 похоже, мой игровой мир все равно будет перемещен? Остается ли скорость относительно камеры?