菜鸟教程小白 发表于 2022-12-13 15:28:21

ios - ARKit - 在用户的电话方向上施加力量


                                            <p><p>我有以下代码创建一个 SCNBox 并将其拍摄到屏幕上。这行得通,但只要我将手机转向任何其他方向,力脉冲就不会更新,它总是会在相同的旧位置射击盒子。</p>

<p>代码如下:</p>

<pre><code>@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 =

      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)


    }
</code></pre>

<p>第 26 行是我施加力的地方,但它没有考虑用户当前的手机方向。我该如何解决? </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>在第 26 行,您将一个常量向量传递给 <code>applyForce</code>。该方法在世界空间中采用一个向量,因此传递一个常量向量意味着您始终在同一方向上施加力 - 如果您想要一个基于相机或其他东西指向的方向的方向,您需要根据该方向计算向量。 </p>

<p>(新)SCNNode 属性 <a href="https://developer.apple.com/documentation/scenekit/scnnode/2867392-worldfront" rel="noreferrer noopener nofollow"><code>worldFront</code></a>在这里可能会有所帮助 - 它为您提供节点指向的方向,自动转换为世界空间,因此它对物理方法很有用。 (尽管您可能想要对其进行缩放。)</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - ARKit - 在用户的电话方向上施加力量,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/44610512/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/44610512/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - ARKit - 在用户的电话方向上施加力量