2

SCNBox を作成して画面に表示する次のコードがあります。これは機能しますが、電話を他の方向に向けるとすぐに、フォースインパルスは更新されず、常に同じ古い位置でボックスを撃ちます.

コードは次のとおりです。

@objc func tapped(recognizer :UIGestureRecognizer) {

        guard let currentFrame = self.sceneView.session.currentFrame else {
            return
        }

        /
        let box = SCNBox(width: 0.2, height: 0.2, length: 0.2, chamferRadius: 0)

        let material = SCNMaterial()
        material.diffuse.contents = UIColor.red
        material.lightingModel = .constant

        var translation = matrix_identity_float4x4
        translation.columns.3.z = -0.01

        let node = SCNNode()
        node.geometry = box
        node.geometry?.materials = [material]

        print(currentFrame.camera.transform)

        node.physicsBody = SCNPhysicsBody(type: .dynamic, shape: nil)

        node.simdTransform = matrix_multiply(currentFrame.camera.transform, translation)
        node.physicsBody?.applyForce(SCNVector3(0,2,-10), asImpulse: true)

        self.sceneView.scene.rootNode.addChildNode(node)


    }

26 行目で力を適用しますが、ユーザーの現在の電話の向きは考慮されていません。どうすれば修正できますか?

4

1 に答える 1