繁体   English   中英

在Unity 3d中自上而下在2D中向鼠标单击移动对象

[英]Move Object toward mouse click in 2D top down Unity3d

我在使对象移向鼠标单击位置时遇到问题。 我的视图是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)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM