SCNNode.physicsBody.velocity не работает правильно после поворота - PullRequest
0 голосов
/ 21 февраля 2020

У меня проблема с node.physicsBody.velocity после поворота SCNNode . Когда я изменяю velocity, он перемещает SCNNode вдоль старых осей. Я перепробовал много способов.

Вот мой код:

let node : SCNNode = SCNNode()

override func viewDidLoad {
    super.viewDidLoad()
    setNode()
}


override func viewDidAppear() {
    rotate(someValue)
    //rotation was presented correctly but when I change a velocity it moves to the bad direction.
    //is there any way to change position correctly? (velocity moves it relative to the world but I want move object relative to isself)
    node.physicsBody?.velocity = SCNVector3(0.1,0,0.1)
}


func setNode() {
    node.position = SCNVector3(0,0,0)
    sceneView.scene.addChildNode(node)
}


func rotate(_ value: Float) {
    node.eulerAngles = SCNVector3(0,value,0)
}

Есть идеи?

ОБНОВЛЕНИЕ: я решил это, добавив node.localTranslate(by: SCNVector3(0.1, 0, 0.1)) вместо использования node.physicsBody.velocity

...