我正在创建一个2D平台游戏,我已经编写了成功向前和向后移动精灵的脚本。但是,我
我尝试以编程方式(因为使用重力选项没有出现在检查器中)这样做 -
void Update () {
anim.SetBool("Grounded", grounded);
anim.SetFloat("Speed", Mathf.Abs(Input.GetAxis("Horizontal")));
rb2d.freezeRotation.freezeRotation = true;
}
但它显然不起作用。 如何使用c#正确冻结精灵的旋转?我在哪里放这个代码?
提前致谢 - 乔治:)
答案 0 :(得分:0)
您可以做的是约束对象一个轴上的旋转:
创建变量float freezeRotationX = 5.0f; //5.0 is just an example
并写下此transfrom.rotation = Quaternion.Euler(freezeRotationX, transfrom.rotation.y, transfrom.rotation.z);
此行应位于更新方法中。
这将固定X轴上的旋转并使其他值保持当前值。 当然,您可以为每个轴创建一个变量。
希望对你有所帮助。
答案 1 :(得分:0)
这很简单,你真的不必使用C#,你可以设置rigidbody2D
的角速度非常高,但是如果这不起作用,请尝试不断设置变换旋转为0,(代码在更新函数中看起来像这样,
getcomponent<yourgameobject>().transform.rotation.z = 0
getcomponent<yourgameobject>().transform.rotation.x = 0
getcomponent<yourgameobject>().transform.rotation.y = 0
语法可能不正确,它可能会减慢游戏速度,但如果你的开始统一则是一个简单的解决方案。