unity3d 使用偏移将3D模型定位在相机前面

jjjwad0x  于 2023-01-21  发布在  其他
关注(0)|答案(1)|浏览(199)

我有一个在特定位置/旋转移动的相机。我有几个3D模型。我希望3D模型以一定的偏移量出现在相机前面。它们应该放置在相机的中心。相机和3D模型之间的距离应该总是保持不变,并且不应该影响相机在什么位置和以什么旋转。
到目前为止,我一直试图这样做:

void OnCamNewPosition(){

this.transform.position = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width/2 + offset, Screen.height/2 + offset, Camera.main.nearClipPlane + offset));
}

这一小段代码在相机处于特定位置时可以工作,但并不总是有效。有时3D模型在相机的左侧而不是中心,有时在相机上方,我们只能看到3D模型的一半。

piwo6bdm

piwo6bdm1#

正如评论所说,在屏幕空间中穿行是没有意义的。如果你瞄准相机变换,它将永远在中心,也适用于没有渲染到屏幕上的相机。

this.transform.position = Camera.main.transform.position + Vector3.forward * offset;
        
// if it should be attached to the camera
this.transform.SetParent(Camera.main.transform);
}

相关问题