我在使对象向鼠标单击位置移动时遇到问题。
我的视图是 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;
}
您最好使用 MoveTowards :
transform.position = Vector3.MoveTowards(transform.position, destination, CONSTANT);
您可以在 Update() 中执行此操作,它将移动 transform.position 直到到达 destination。
我也会避免你在那里的收益。将其移至 Update() 函数并使用布尔值来确保对象到达时不会移动它。例如,您执行以下操作:
Mathf.Abs(Vector3.Distance(position, destination)) <= EPSILON
此外,在 2D 中,获取鼠标位置的最佳方法如下:
Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero)
您想要将鼠标映射到对象的空间,而不是相反。