如何以与鼠标拖动相同的速度移动游戏对象



我正在尝试单击游戏对象并以与鼠标相同的速度移动它。 我能够让对象移动,但我必须做一些疯狂的修改才能让它不从屏幕上消失。

注意:我的最终目标是为移动设备执行此操作,但我从鼠标开始。

public class ItemController : MonoBehaviour {
    private Vector3 startPos;
    private bool ObjectMouseDown = false;
    void Update()
    {
       Debug.Log(Input.mousePosition + new Vector3(0,0,15));
    }
    void OnMouseDown()
    {
        startPos = transform.position;
        ObjectMouseDown = true;
    }
    void OnMouseDrag()
    {
        if (ObjectMouseDown == true)
        {
            transform.position = Vector3.MoveTowards(transform.position, Input.mousePosition + new Vector3(0, 0, 5), Time.deltaTime * 2f);
          //      transform.position = Vector3.MoveTowards(transform.position, endPosition, speed * Time.deltaTime);
        }
    }
    void OnMouseUp()
    {
        ObjectMouseDown = false;
    }
}

请注意,我必须添加 z 值 15,以便对象不会浮出屏幕。

任何帮助都会很棒。

>Input.mousePosition返回屏幕上的绝对像素位置,而不是世界位置。你需要使用这样Camera.ScreenToWorldPoint的东西

Vector3 mouseWorldPos = Camera.main.ScreenToWorldPoint(Input.position.x, Input.position.y, 15);
transform.position = mouseWorldPos;

您可以在此处阅读更多信息 https://docs.unity3d.com/ScriptReference/Camera.ScreenToWorldPoint.html

最新更新