Поворот SKSpriteNode по дуге с помощью SpriteKit

Я пытаюсь найти способ вращения объекта SKSpriteNode, когда он находится в полете (под действием силы тяжести) по дуге. Я использую SpriteKit и бросаю объект с помощью applyImpulse. Проблема в том, что объект, несмотря на то, что движется по дуге в воздухе, остается в одном и том же положении.

Представьте лучника, стреляющего из лука. Стрелка направлена ​​вверх и должна указывать вверх в этом направлении. Как только стрелка начнет падать по дуге, она должна начать вращаться вниз.

Есть ли способ автоматизировать это с помощью физики SpriteKit? Должен ли я бросать стрелку по-другому вместо использования applyImpulse? Нужно ли мне самому придумывать какой-то алгоритм вращения на основе скорости объектов?


person datWooWoo    schedule 05.01.2015    source источник


Ответы (1)


В вашем didSimulatePhysics или update вы можете повернуть свой спрайт по направлению к его вектору. Не уверен, что есть способ сделать это автоматически.

let angle = atan2(mySprite.physicsBody!.velocity.dy, mySprite.physicsBody!.velocity.dx)
mySprite.zRotation = angle
person hamobi    schedule 05.01.2015
comment
никакого автоматизма, только вышеуказанное и надежное преобразование вектора направления в угол - person LearnCocos2D; 06.01.2015