2016-12-22 2 views
0

Узел не вращается при запуске приложения. Независимо от того, с чем меняю поворот, узел останется, как если бы он был «0,0,0,0».Узел не вращается?

class CustomSCNNode: SCNNode { 



var positionToSlideFrom = SCNVector3Zero 

convenience init(geometry: SCNGeometry, initialPosition: SCNVector3, rotation: Float) { 
    self.init() 
    self.geometry = geometry 
    self.position = initialPosition 
    self.positionToSlideFrom = initialPosition 
    self.rotation.y = rotation 


} 

} 

// узел передан в GeometryNodes для перемещения пользователем. Здесь ничего не происходит!

class GeometryNodes { 


let sphere = CustomSCNNode(geometry: SCNSphere(radius: 0.05), initialPosition: SCNVector3(0,1.3,0), rotation: -45) 

func addNodesTo(_ parentNode: SCNNode) { 
    sphere.rotation.y = -45 
    parentNode.addChildNode(sphere) 

} 

func slideFunction(_ node: CustomSCNNode, translation: Float) { 
    //Can't add anything yet due to rotation not working 

    } 
func slideFunction2(_ node: SCNNode, translation: Float) { 

    node.position.z = translation 
    //node.position.x = translation 

} 

func slide(xTranslation: Float) { 

    slideFunction(sphere, translation: xTranslation) 
} 
func slide2(zTranslation: Float) { 
    //let gameScene = BallScene() 
    slideFunction2(sphere, translation: zTranslation) 

} 

} 

ответ

0

Чтобы применить поворот на 45 ° вокруг оси Y, вам нужно указать вращение как:

self.rotation = SCNVector4Make(0, 1, 0, 45 * M_PI/180.0) 

Аналогично убедитесь, что вы выразить ось XYZ правильно, если вы вращаетесь вокруг осей Х или Z.

В качестве альтернативы, вы можете также использовать eulerAngles свойство, чтобы указать вращение, как, например:

self.euelerAngles = SCNVector3Make(0, 45 * M_PI/180.0, 0) 
Смежные вопросы