Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在二维自上而下的Unity3d中向鼠标单击移动对象_C#_Unity3d_Unityscript - Fatal编程技术网

C# 在二维自上而下的Unity3d中向鼠标单击移动对象

C# 在二维自上而下的Unity3d中向鼠标单击移动对象,c#,unity3d,unityscript,C#,Unity3d,Unityscript,我在使对象朝鼠标单击位置移动时遇到问题。 我的视图是2D自顶向下视图(y轴是垂直的),但当我获得鼠标单击的位置时。当物体开始绕x轴的位置旋转时,我向其添加力 yield return new WaitForSeconds (1); while (!firstTime) { MousePosition = MainCamera.WorldToScreenPoint (transform.position); CheckSpeed(Vector3.Distan

我在使对象朝鼠标单击位置移动时遇到问题。 我的视图是2D自顶向下视图(y轴是垂直的),但当我获得鼠标单击的位置时。当物体开始绕x轴的位置旋转时,我向其添加力

    yield return new WaitForSeconds (1);
while (!firstTime) {
        MousePosition = MainCamera.WorldToScreenPoint (transform.position);
        CheckSpeed(Vector3.Distance(this.transform.position, MousePosition));
        Quaternion rotation = transform.rotation;
        Vector3 dir = rotation * Vector3.forward;
        this.rigidbody.AddForce (dir*100);
        transform.position = Vector3.Lerp (transform.position, dir ,Time.deltaTime* forwardSpeed);      
        yield return new WaitForSeconds (1f);
    }
    yield break;
}

您最好使用MoveToward:

transform.position = Vector3.MoveTowards(transform.position, destination, CONSTANT);
您可以在Update()中执行此操作,它将移动transform.position,直到到达目的地

我也会避免你的收益。将其移到Update()函数,并使用布尔值确保对象到达时不会移动。例如,您可以执行以下操作:

Mathf.Abs(Vector3.Distance(position, destination)) <= EPSILON
您希望将鼠标映射到对象的空间,而不是相反

Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero)