如何编程僵化的刚性旋转



我正在创建一个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

语法可能不正确,并且可能会减慢游戏的速度,但是如果您的开始统一是一个简单的解决方案。

相关内容

  • 没有找到相关文章

最新更新