SceneKit'i kullanıyorum ve birden çok SCNNode'lu bir uygulamaya sahip olduğumu ve kullanıcının bir tanesine dokunduğunda, parmaklarını takip edecek (bir UILongPressGestureRecognizer kullanarak).Yönü değiştirmeden SCNNode konumunu değiştirin
Bu satırda_currentlyMoving?.position = SCNVector3Make(worldPoint.x, worldPoint.y, worldPoint.z)
, _currentlyMoving
SCNNode ve Worldpuan benim parmak pozisyonu: devlet başladı ve değişti, ben düğümün konumunu değiştirmek için aşağıdaki kod satırını kullanıyorum.
Bu, düğümü doğru konuma taşıyor; bununla birlikte, düğümün dönüşünü de (0,0,0) olarak değiştiriyor gibi görünmektedir (Düğüm her zaman başlangıç rotasyonundadır.)
Bir SCNNode'un konumunu etkilemeden değiştirmenin herhangi bir yolu var mı? rotasyon?
Ayrıca, ben denedim aşağıdaki ancak ya (aynı şey oldu) işe yaramadı:
_currentlyMoving?.transform.m41 = worldPoint.x
_currentlyMoving?.transform.m42 = worldPoint.y
_currentlyMoving?.transform.m43 = worldPoint.z
Ben düğümle yapıyorum tek şey onu durdurmak için aşağıdaki üç satır olduğunu hareket etmesini süre aldı:
_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)
Düğümünüzün bir fiziksel kümesi var mı? Programlı olarak hareket ediyorsanız, "kinematik" bir vücut kullandınız mı? – Toyos
@Toyos Bir fizik var Vücut, ama dinamik değil, kinematik. – Jsdodgers
Bazı kısıtlamalarınız yoksa, düğümün dönüşümü konumundan etkilenmemelidir. Bu sorunu yeniden oluşturmak için minimum kodu paylaşabilir misiniz? – Gusutafu