【发布时间】:2023-04-05 19:56:01
【问题描述】:
我有一个屏幕顶部有一个 BAR 的手机游戏。该栏及其游戏对象位于具有“屏幕空间 - 叠加”模式的画布中,以及具有“按屏幕大小缩放”的缩放模式的画布缩放器,并且匹配等于“匹配宽度或高度”。
我正在将一个游戏对象设置为其中一个对象的位置,并且该对象完全离开了屏幕(真的很远)。
我正在尝试使用下面的代码获取对象的位置。
即便如此,返回的位置还是屏幕的完整。知道我做错了什么吗?
public Vector3 getObjectPosition()
{
// Getting my CANVAS
Camera cam = Camera.main;
GameObject canvasOverlayObject = GameObject.Find("CanvasOverlay");
Canvas canvas = canvasOverlayObject.GetComponent<Canvas>();
//Manual scalling the CANVAS
float canvasScaleX = Screen.width / canvasOverlayObject.GetComponent<CanvasScaler>().referenceResolution.x;
float canvasScaleY = Screen.height / canvasOverlayObject.GetComponent<CanvasScaler>().referenceResolution.y;
return Camera.main.ScreenToWorldPoint(new Vector3(transform.position.x / canvas.scaleFactor, transform.position.y / canvas.scaleFactor, 0));
}
【问题讨论】:
-
在
Camera.main.ScreenToWorldPoint(new Vector3(transform.position.x / canvas.scaleFactor, transform.position.y / canvas.scaleFactor, 0));中,您在任何地方都没有使用任何之前计算的值.. 请注意,您应该始终传入z的值而不是0前面有一定距离的位置相机。 -
感谢您的提示 derHugo,这是找到答案的关键。
标签: unity3d unity3d-gui