首页 > 解决方案 > 我的位置相同,但节点不在同一个地方?

问题描述

在我的 SceneKit 场景中,我有一个节点,它是一个玩家将与之交互的球和一个相机,相机是一个名为“selfieStick”的对象的子对象,它将跟随球并为相机将球聚焦在其中。当我实现这个时,我使用以下代码执行此操作:

func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) {
    let ball = ballNode?.presentation
    let ballPosition = ball?.position

    selfieStickNode?.position = ballPosition!
}

但是当我运行游戏并点击球(使其向前跳跃)时,自拍杆和球会朝两个不同的方向移动......一旦我打开场景检查器并进入场景,我会检查所有东西的位置,然后球和 seflieStick 的位置是相同的,因为它们应该是......但节点不在场景中的同一个位置......下面的屏幕截图。

侧角 选择自拍杆 与 selfieStick 相关的球

标签: iosswiftiphonescenekit

解决方案


我想通了......由于某种原因,selfieStick 每次都在相反的 Z 方向上移动......所以我用下面的代码修复了它:

func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) {
    let ball = ballNode?.presentation
    let ballPosition = ball?.position
    let finalPosition = SCNVector3(ballPosition!.x,
                                   ballPosition!.y,
                                   (ballPosition!.z * -1))

    selfieStickNode?.position = finalPosition
}

推荐阅读