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