首页 文章

翻转transform.right后,GameObject向错误的方向移动

提问于
浏览
-1

我正在Unity中开展2D游戏 . 我有一些GameObjects应该移动到玩家的方向 .

在开始时,我将transform.forward向量翻转到玩家的方向 .

Vector3 target = new Vector3(player.transform.position.x, transform.position.y, transform.position.z);
transform.right = (target - transform.position).normalized;

在编辑器中,我可以看到transform.right向量(红色箭头)指向正确的方向 . 但是当我移动游戏对象时,如果游戏对象来自玩家,它会向错误的方向移动 .

rBody.AddForce(Vector2.right * movementSpeed);

我不明白为什么?有人有什么建议吗?谢谢 .

2 回答

  • 0

    你正在使用 AddForce() ,它总是使用全局空间来引用你的角色 . 您想使用本地空间附加力,因此请使用 AddRelativeForce() .

    尝试:

    rBody.AddRelativeForce(Vector2.right * movementSpeed);
    

    https://docs.unity3d.com/ScriptReference/Rigidbody.AddRelativeForce.html

  • 0

    将Vector2.right改为transform.right解决了我的问题

    rBody.AddForce(transform.right * movementSpeed);
    

相关问题