Debug.DrawRay() 在 Unity2D 中指向错误的方向
Debug.DrawRay() pointing to wrong direction in Unity2D
我正在尝试学习如何在 Unity2D 中进行 Raycast。
这是我的代码:
Ray ray;
void Update()
{
ray = new Ray(transform.position, Input.mousePosition);
Debug.DrawRay(transform.position,Input.mousePosition);
}
这会导致奇怪的行为。
transform.position是player对象的Vector3。
我想通过鼠标位置从玩家对象发射光线。
然而,这似乎不起作用。
线条已绘制,但表现异常。它根本不指向它。很难准确地将其行为描述为不稳定以外的任何行为。
我做错了什么?
我认为输入 Input.mousePosition 和一般说明可能有问题。如果您能提供任何帮助,我将不胜感激。
注意:我使用的是Unity 2D。
当您使用 Input.mousePosition
时,您会得到一个 Vector2
,它表示鼠标相对于相机的位置。这意味着你得到的X和Y实际上是鼠标在屏幕上的位置的X和Y。
这些坐标不是世界坐标。
例如,如果您要从站在 0,0,0
的玩家的 transform.position
绘制一条射线到 500, 250
的鼠标位置,您会得到一条巨大且看似随机指向的射线.
将鼠标在屏幕上的位置(屏幕坐标)转换为它在游戏中指向的位置(世界坐标)you can use Camera.ScreenToWorldPoint
。
例如
Ray ray;
void Update()
{
// get the mouse screen pos
Vector3 mousePosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y);
// convert it
Vector3 worldMousePosition = Camera.Main.ScreenToWorldPoint(mousePosition);
ray = new Ray(transform.position, );
Debug.DrawRay(transform.position, worldMousePosition);
}
我正在尝试学习如何在 Unity2D 中进行 Raycast。
这是我的代码:
Ray ray;
void Update()
{
ray = new Ray(transform.position, Input.mousePosition);
Debug.DrawRay(transform.position,Input.mousePosition);
}
这会导致奇怪的行为。
transform.position是player对象的Vector3。
我想通过鼠标位置从玩家对象发射光线。
然而,这似乎不起作用。
线条已绘制,但表现异常。它根本不指向它。很难准确地将其行为描述为不稳定以外的任何行为。
我做错了什么?
我认为输入 Input.mousePosition 和一般说明可能有问题。如果您能提供任何帮助,我将不胜感激。
注意:我使用的是Unity 2D。
当您使用 Input.mousePosition
时,您会得到一个 Vector2
,它表示鼠标相对于相机的位置。这意味着你得到的X和Y实际上是鼠标在屏幕上的位置的X和Y。
这些坐标不是世界坐标。
例如,如果您要从站在 0,0,0
的玩家的 transform.position
绘制一条射线到 500, 250
的鼠标位置,您会得到一条巨大且看似随机指向的射线.
将鼠标在屏幕上的位置(屏幕坐标)转换为它在游戏中指向的位置(世界坐标)you can use Camera.ScreenToWorldPoint
。
例如
Ray ray;
void Update()
{
// get the mouse screen pos
Vector3 mousePosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y);
// convert it
Vector3 worldMousePosition = Camera.Main.ScreenToWorldPoint(mousePosition);
ray = new Ray(transform.position, );
Debug.DrawRay(transform.position, worldMousePosition);
}