【问题标题】:SCNAction.rotate clips through other nodesSCNAction.rotate 剪辑通过其他节点
【发布时间】:2017-01-07 02:42:26
【问题描述】:

我有一个节点 (nodeCollection),它有一个 SCNNode 作为 childNode,它是这样创建的:

let boxGeo = SCNBox(width: 1, height: 1, length: 1, chamferRadius: 0.0)
let node = SCNNode(geometry: boxGeo)
node.physicsBody = SCNPhysicsBody.staticBody()

我也在像这样创建红盒节点:

let redBox = SCNNode()
redBox.geometry = SCNBox(width: 0.5, height: 0.5, length: 0.5, chamferRadius: 0.1)
redBox.geometry?.firstMaterial?.diffuse.contents = UIColor.redColor()
redBox.position = SCNVector3Make(0, 1, -2)
redBox.physicsBody = SCNPhysicsBody.dynamicBody()

然后我运行下面的代码来使节点旋转

let rotateAction = SCNAction.rotateByAngle(CGFloat(M_PI_2), aroundAxis: SCNVector3Make(0, 0, 1), duration: 0.15)
rotateAction.timingMode = .EaseInEaseOut
nodeCollection.runAction(rotateAction)

然后我将 nodeCollection 和 redBox 作为 childNodes 添加到 SCNScene

但正如您所看到的,当我在 nodeCollection 上执行旋转时,redBox 的物理特性并不成立。 当红色盒子停下并停在蓝色盒子上时,物理原理起作用

我怎样才能解决这个问题,这样当蓝色框旋转时,它不只是穿过红色框

【问题讨论】:

    标签: ios scenekit scnnode


    【解决方案1】:

    尝试将蓝色框的physicsBody类型更改为kinematic,静态物体不应该移动。

    这里解释了不同的类型: https://developer.apple.com/library/ios/documentation/SceneKit/Reference/SCNPhysicsBody_Class/#//apple_ref/c/tdef/SCNPhysicsBodyType

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-04
      • 1970-01-01
      • 1970-01-01
      • 2021-03-21
      • 2017-11-14
      • 2018-07-30
      • 2020-11-29
      • 1970-01-01
      相关资源
      最近更新 更多