我正在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);
我不明白为什么?有人有什么建议吗?谢谢。
答案 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);