我正在创建一个2D平台游戏,我已经编写了脚本,使Sprite向前和向后移动。但是,我是极度新的unity和c#,所以我不知道如何冻结精灵的旋转。
我尝试通过编程进行(因为使用重力选项没有出现在检查员中),例如 -
void Update () {
anim.SetBool("Grounded", grounded);
anim.SetFloat("Speed", Mathf.Abs(Input.GetAxis("Horizontal")));
rb2d.freezeRotation.freezeRotation = true;
}
,但显然不起作用。如何用C#正确冻结精灵的旋转?我在哪里放置此代码?
预先感谢乔治:)
您可以做些什么来约束对象的一个轴上的旋转:
-
创建一个变量
float freezeRotationX = 5.0f; //5.0 is just an example
-
并编写此
transfrom.rotation = Quaternion.Euler(freezeRotationX, transfrom.rotation.y, transfrom.rotation.z);
该行应该在更新中。
这将修复X轴上的旋转,并将其他旋转留给其当前值。当然,您可以为每个轴创建一个变量。
希望对您有帮助。
这很简单,您真的不必使用C#,您只能设置rigidbody2D
的角速度,但是如果那不起作用,请尝试不断设置转换旋转到0(更新功能中的代码看起来像这样,
getcomponent<yourgameobject>().transform.rotation.z = 0
getcomponent<yourgameobject>().transform.rotation.x = 0
getcomponent<yourgameobject>().transform.rotation.y = 0
语法可能不正确,并且可能会减慢游戏的速度,但是如果您的开始统一是一个简单的解决方案。