在 2D 自上而下中将对象移动到鼠标单击

问题描述 投票:0回答:1

我在使对象向鼠标单击位置移动时遇到问题。

我的视图是 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;
}
c# unity-game-engine
1个回答
1
投票

您最好使用 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)

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

© www.soinside.com 2019 - 2024. All rights reserved.