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

时间:2016-08-16 19:31:47

标签: c# unity3d 2d unity5

我正在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);

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

2 个答案:

答案 0 :(得分:0)

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

尝试:

rBody.AddRelativeForce(Vector2.right * movementSpeed);

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

答案 1 :(得分:0)

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

rBody.AddForce(transform.right * movementSpeed);