我正在开发2D游戏,我需要能够在游戏世界中检测鼠标位置。问题是,当我在编辑器上它工作得很好,但当我运行独立并设置一个宽高比不同于我的计算机上的本机的分辨率时,它有一个奇怪的偏移。
在图片中,红点表示我点击时鼠标的位置,黄点表示游戏检测到位置的位置。 当我使用宽高比16:9运行全屏时,我没有这个问题,这是我的PC的默认值。
检测代码如下。
void useHook(Vector3 mousePosition)
{
Vector2 mousePos = new Vector2(mousePosition.x, mousePosition.y);
Vector2 ray2D = Camera.main.ScreenToWorldPoint(mousePos);
RaycastHit2D hit = Physics2D.Raycast(ray2D, Vector2.zero);
if (hit.collider != null)
{
GameObject target = hit.collider.gameObject;
if (target.tag.Equals("Grappleable"))
{
//Grapple
}
}
}
我正在使用 ortho camera 并像这样调用useHook
。
Update()
{
if(Input.GetKeyDown(KeyCode.Mouse0))
{
useHook(Input.mousePosition);
}
}