如何以编程方式冻结刚体的旋转?
How do I freeze rotation of a Rigidbody programatically?
我正在创建一个 2D 平台游戏,我已经编写了成功向前和向后移动精灵的脚本。但是,我非常 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
的 angular velocity 设置得非常高,但如果这不起作用,请尝试不断将变换旋转设置为 0,(代码在更新函数中看起来像这样,
getcomponent<yourgameobject>().transform.rotation.z = 0
getcomponent<yourgameobject>().transform.rotation.x = 0
getcomponent<yourgameobject>().transform.rotation.y = 0
语法可能不正确,并且可能会减慢游戏速度,但如果您一开始就团结一致,这是一个简单的解决方案。
我正在创建一个 2D 平台游戏,我已经编写了成功向前和向后移动精灵的脚本。但是,我非常 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
的 angular velocity 设置得非常高,但如果这不起作用,请尝试不断将变换旋转设置为 0,(代码在更新函数中看起来像这样,
getcomponent<yourgameobject>().transform.rotation.z = 0
getcomponent<yourgameobject>().transform.rotation.x = 0
getcomponent<yourgameobject>().transform.rotation.y = 0
语法可能不正确,并且可能会减慢游戏速度,但如果您一开始就团结一致,这是一个简单的解决方案。