【发布时间】:2016-02-07 08:53:57
【问题描述】:
我的 3D 世界中有两个 SCNNode A 和 B。 A 由用户移动,而 B 有一个动作使其从左向右移动。这是对 B 的操作:
let moveDirection: Float = position.x > 0.0 ? -1.0 : 1.0
let moveDistance = levelData.gameLevelWidth()
let moveAction = SCNAction.moveBy(SCNVector3(x: moveDistance * moveDirection, y: 0.0, z: 0.0), duration: 10.0)
let action = SCNAction.runBlock { node -> Void in
}
carNode.runAction(SCNAction.sequence([moveAction, action]))
A 和 B 可能发生碰撞,如果 a 接触 B,则 A 必须开始与 B 一起移动,就好像它们是一个单独的对象一样,直到用户使用命令移动 A。在方法中检测到碰撞
func physicsWorld(world: SCNPhysicsWorld, didBeginContact contact: SCNPhysicsContact)
但我不知道我应该采取什么方法来使 A 与 B 一起移动。我正在考虑将操作的副本应用到新位置,或者如果可能的话,将当前执行的操作应用到节点 A。我还想使 A 成为 B 的子节点,然后将其移回根节点,但它似乎不起作用。
【问题讨论】: