如果我使用翻译作为一种行动方式,我已经找到了解决方案:
http://answers.unity3d.com/questions/1035804/how-do-you-make-an-omnidirectional-2d-character-co.html
然而,我无法找到一个解决方案来解决如何使用基于物理的运动。
我的chracters控制器能够围绕z轴旋转相机:
public Transform target;
private float cameraRot = 3;
if (Input.GetKey("q"))
{
target.transform.Rotate(0, 0, cameraRot);
}
然后我在我创建的世界中的所有精灵上都有一个脚本,旋转以始终面向相机:
public Transform target;
void Start () {
target = GameObject.Find("MainCamera").GetComponent<Transform>();
}
void Update () {
if (target != null)
this.transform.rotation = Camera.main.transform.rotation;
}
一切正常。然而,当我旋转相机,因此旋转精灵。当刚体运动在全球范围内旋转时,刚体运动变得全部倾斜。空间,而不是&#34;本地&#34;。
我尝试将facecamera脚本放在子对象上只是为了让刚体离开,但这没有任何效果。
我希望我说得够清楚,有人可以提供帮助。
非常感谢您的时间,如果我找到了解决方案,我会将答案标记为正确,如果我在答案之前自行解决这个问题,我会更新我的修复方法。
答案 0 :(得分:0)
解决方案是使用:
IsType<T>()
代替:
Rigidbody.AddRelativeForce(Vector2.down * speed);
在局部轴上添加力而不是全局。
文档在这里:
https://docs.unity3d.com/ScriptReference/Rigidbody.AddRelativeForce.html