统一鼠标位置

时间:2017-10-29 08:30:27

标签: c# unity3d

我正在尝试将对象移动到鼠标位置。但是它给了我大的x值,比如300,但在那个地方预先放置的物体的x位置是-4。

rigidBody.velocity = new Vector3(Input.mousePosition.x, EndPointY, 0)*4;

那我怎样才能获得当前的鼠标位置?

谢谢..

4 个答案:

答案 0 :(得分:7)

对于2D向量,使用ScreenToWorldPoint进行的转换是直接的:

    Vector2 screenPosition = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
    Vector2 worldPosition = Camera.main.ScreenToWorldPoint(screenPosition);

答案 1 :(得分:5)

Input.mousePosition会在屏幕上显示鼠标的位置(像素)。您需要使用Camera.ScreenToWorldPoint()将这些像素转换为世界单位。

您可以按照this link了解如何使用鼠标拖动3D对象,也可以复制此代码以将对象从当前位置移动到鼠标位置。

 //the object to move
public Transform objectToMove;

 void Update()
 {
     Vector3 mouse = Input.mousePosition;
     Ray castPoint = Camera.main.ScreenPointToRay(mouse);
     RaycastHit hit;
     if (Physics.Raycast(castPoint, out hit, Mathf.Infinity))
     {
         objectToMove.transform.position = hit.point;
     }
 }

答案 2 :(得分:3)

这是当前的鼠标位置。问题是您的对象是世界坐标,鼠标是使用屏幕坐标。

您需要使用Camera.ScreenToWorldPoint()转换鼠标位置。

答案 3 :(得分:1)

如果您想使用新的Unity InputSystem,则可以执行以下操作:

iloc

请注意,您需要install the InputSystem package才能正常工作。