目前,我有2个摄像头,一个用于查看3D对象(透视),另一个用于查看2D对象(正交)。
(此外,摄像机的视线永远不会相互遮挡。)
我所拥有的分别是2D和3D Camera
,以及3D Vector3
的{{1}}位置。
我目前所拥有的:
GameObject
此外,我确保3D和2D对象的枢轴点都正确设置在中心,但是仍然无法按预期工作。
(我目前正在使用public Vector2 Convert3DPositionTo2DPosition(Camera camera3D, Vector3 position3D, Camera camera2D) {
var tempPos = camera3D.WorldToViewportPoint(position3D);
return camera2D.ViewportToWorldPoint(tempPos);
}
)
我想要的TLDR:
我想要一个基于3D相机的对象的世界位置,而现在该对象位于2D相机的视图中,并且让它们看起来在播放器的视点(显示屏幕)中处于相同位置。>
此后要实例化(使用该位置)的是非UI GameObject。
更具体地说,是粒子系统。
答案 0 :(得分:1)
检查两个Viewport Rect
的{{1}}设置!
如果两台摄像机之间有任何差异,您总是会在位置上产生偏移。
我使用来测试您的解决方案
Camera
,只要public Camera camera3d;
public Camera camera2d;
public Transform obj3d;
public Transform obj2d;
void Update()
{
obj2d.position = camera2d.ViewportToWorldPoint(camera3d.WorldToViewportPoint(obj3d.position));
}
设置匹配,它就可以正常工作-如您所见here和here。