C# 在二维自上而下的Unity3d中向鼠标单击移动对象
我在使对象朝鼠标单击位置移动时遇到问题。 我的视图是2D自顶向下视图(y轴是垂直的),但当我获得鼠标单击的位置时。当物体开始绕x轴的位置旋转时,我向其添加力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
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)