我正在使用SceneKit並且有多個SCNNodes的應用程序,當用戶點擊一個時,它將按照他們的手指(使用UILongPressGestureRecognizer)。在國家開始和改變,我使用下面的代碼行更改節點的位置:在不改變方向的情況下更改SCNNode位置
_currentlyMoving?.position = SCNVector3Make(worldPoint.x, worldPoint.y, worldPoint.z)
在這一行,_currentlyMoving
是SCNNode,並worldPoint我的手指的位置。
這是將節點移動到正確的位置;然而,它也似乎正在改變節點的旋轉到(0,0,0)(該節點始終處於其開始旋轉)。
有什麼方法可以改變SCNNode的位置而不影響迴轉?
另外,我曾嘗試以下,但它沒有工作,要麼(同樣的事情發生):
_currentlyMoving?.transform.m41 = worldPoint.x
_currentlyMoving?.transform.m42 = worldPoint.y
_currentlyMoving?.transform.m43 = worldPoint.z
,我與節點做的唯一的另一件事是下面三行阻止它從移動中拿起:
_currentlyMoving?.physicsBody?.velocity = SCNVector3Make(0.0, 0.0, 0.0)
_currentlyMoving?.physicsBody?.velocityFactor = SCNVector3Make(0.0, 0.0, 0.0)
_currentlyMoving?.physicsBody?.angularVelocity = SCNVector4Make(0.0, 0.0, 0.0, 1.0)
您的節點是否有physicBody集?如果您正在以編程方式移動它,您是否使用「運動學」機構? – Toyos 2014-10-03 20:44:56
@Toyos它確實有一個physicsBody,但它是動態的,而不是運動學的。 – Jsdodgers 2014-10-05 18:10:47
節點的變換不應該受其位置的影響,除非你有一些限制。你能分享最小的代碼來重現這個問題嗎? – Gusutafu 2014-10-06 02:11:37