Unity:自上而下视图 - 游戏对象不会向鼠标位置旋转

Unity: TopDown view - GameObject does not rotate toward mousepos

我一直在研究为什么我的播放器 (GameObject) 没有旋转到我的 TopDown 3D 游戏中的鼠标位置,而且我似乎找不到我的代码有什么问题,所以我正在制作这个post。我遇到的问题是只有我的玩家的游戏对象(在我的例子中是一个胶囊)向我的鼠标位置旋转,但我的玩家的轴保持不变。换句话说,我不能旋转我的玩家的轴来面对我的鼠标位置,但我可以旋转我的玩家的游戏对象来面对我的鼠标位置。这真的很难解释,这在我以前从未发生过。问题是如何旋转我的播放器的轴以面对我的鼠标位置。请记住,我的游戏是自上而下的视图。

这是我用于我的 playerMouvment 和我的 mouseLook 的代码:

public class Controller : MonoBehaviour
{
    public float moveSpeed = 6;

    Rigidbody rb;
    Camera viewCamera;
    Vector3 velocity;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
        viewCamera = Camera.main;
    }

    void Update()
    {
        Vector3 mousePos = viewCamera.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, viewCamera.transform.position.y));
        transform.LookAt(mousePos + Vector3.up * transform.position.y);
        velocity = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical")).normalized * moveSpeed;
    }

    void FixedUpdate()
    {
        rb.MovePosition(rb.position + velocity * Time.fixedDeltaTime);
    }
}

我再次尝试查找我的代码中的任何错误,但我找不到任何导致这种奇怪情况的原因,所以如果有人能帮助我找到更好的方法来编写这段代码并解决我的问题,那就是太棒了!

如果我对你的理解是正确的,那么你的游戏一切正常,玩家可以正常转动,但只有在编辑器中,玩家的轴(红色、绿色和蓝色箭头)不随玩家?

如果这是问题所在,可能是您使用的是全局 space 句柄而不是本地 space。单击我在图像中突出显示的图标应该可以解决问题。

使用此代码代替 LookAt() 函数

Vector2 direction = mousePos.position - player.transform.position;
player.transform.right /* Maybe you need Up or -Up or -right */ = direction;

在某些情况下这也行得通

Vector2 direction = new Vector2
(
mousePos.position.x - player.transform.position.x,
mousePos.positoin.y - player.transform.position.y
)

player.transform.right /* Maybe you need Up or -Up or -right */ = direction;