Такая же проблема, как этот вопрос как отследить положение узла после применения силы в Arkit 1.5 , но без ответа Итак, я добавляю новый вопрос
У меня есть узел (SCNSphere), в которомЯ применяю силу.Узел имеет dynamic
Физическое тело.При пролистывании я прикладываю силу к SCNNode
, используя physicsBody?.applyForce
, что все хорошо работает
Проблема возникает после применения силы, поскольку она имеет dynamic
тело, оно непрерывно опускается, и Я хочу отслеживать эту позицию
на renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval)
Я печатаю position
из SCNNode
, но он каждый раз показывает одну и ту же позицию, почему позиция Y не уменьшается при движении вниз?
Как
<SCNNode: 0x280f29500 'ball' pos(-0.165368 0.3 -0.809096) | geometry=<SCNSphere: 0x280619380 | radius=0.150> | no child>
<SCNNode: 0x280f29500 'ball' pos(-0.165368 0.2 -0.809096) | geometry=<SCNSphere: 0x280619380 | radius=0.150> | no child>
<SCNNode: 0x280f29500 'ball' pos(-0.165368 0.1 -0.809096) | geometry=<SCNSphere: 0x280619380 | radius=0.150> | no child>
и так далее?
Как я добавил узел
let ballWithOrientation = getNewBallNode() // return ball node + position
let ballNode = ballWithOrientation.ball // it is the SCNNode
self.sceneView.scene.rootNode.addChildNode(ballNode ?? SCNNode()) // Added to the scene
let cameraPosition = self.sceneView.pointOfView?.worldFront
let target = SCNVector3(Double(cameraPosition?.x ?? 1) * forceVector,Double (cameraPosition?.y ?? 1) * forceVector,Double(cameraPosition?.z ?? 1) * forceVector) // Vector of direction
let throwSpeed = self.calculateBestThrowSpeed(origin: ballNode!.position, target:target , timeToTarget: 0.66) Calculated vector with velocity
ballNode?.physicsBody?.applyForce(throwSpeed, asImpulse: true) // apply force
Вопрос Как отследить мировое положение SCNNode после применения силы?