将对象移向2D中自上而下的Unity3d

时间:2014-08-24 19:56:57

标签: c# unity3d unityscript

我遇到了使对象移向鼠标点击位置的问题。 我的视图是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;
}

1 个答案:

答案 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)

您希望将鼠标映射到对象的空间,而不是相反。