【问题标题】:GameObject moves in the wrong direction after flipping transform.right翻转 transform.right 后 GameObject 向错误的方向移动
【发布时间】:2016-08-16 19:31:47
【问题描述】:

我正在使用 Unity 开发一款 2D 游戏。我有一些游戏对象应该向玩家的方向移动。

在开始时,我将 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);

我不知道为什么?有人有什么建议吗?谢谢。

【问题讨论】:

    标签: c# unity3d 2d unity5


    【解决方案1】:

    您正在使用AddForce(),它始终使用全局空间来引用您的角色。你想使用本地空间来附加你的力量,所以使用AddRelativeForce()

    试试:

    rBody.AddRelativeForce(Vector2.right * movementSpeed);
    

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

    【讨论】:

    • 我之前尝试过 AddRelativeForce 但它是同样的问题。但我可以用 rBody.AddForce(transform.right * motionSpeed); 解决我的问题
    【解决方案2】:

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

    rBody.AddForce(transform.right * movementSpeed);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多