【问题标题】:How do I freeze rotation of a Rigidbody programatically?如何以编程方式冻结刚体的旋转?
【发布时间】:2016-06-24 17:07:02
【问题描述】:

我正在创建一个 2D 平台游戏,并且我已经编写了成功地向前和向后移动精灵的脚本。但是,我对 Unity 和 C#非常陌生,所以我不知道如何冻结精灵的旋转。

我尝试以编程方式(因为使用重力选项没有出现在检查器中)像这样-

void Update () {

    anim.SetBool("Grounded", grounded);
    anim.SetFloat("Speed", Mathf.Abs(Input.GetAxis("Horizontal")));

    rb2d.freezeRotation.freezeRotation = true;

}

但它显然不起作用。 如何使用 c# 正确冻结精灵的旋转?我把这段代码放在哪里?

提前致谢- 乔治:)

【问题讨论】:

  • 谢谢大家!我尝试了你的两个建议,我得到了它的工作。谢谢! :)

标签: c# graphics 2d unity5 rigid-bodies


【解决方案1】:

你可以做的是限制对象的一个​​轴上的旋转:

  • 创建变量float freezeRotationX = 5.0f; //5.0 is just an example

  • 然后写这个transfrom.rotation = Quaternion.Euler(freezeRotationX, transfrom.rotation.y, transfrom.rotation.z); 这行应该在更新方法中。

这将固定 X 轴上的旋转,而其他的则保留其当前值。 当然你可以为每个轴创建一个变量。

希望对你有所帮助。

【讨论】:

    【解决方案2】:

    这很简单,你真的不必使用C#,你可以将rigidbody2D的角速度设置得很高,但如果这不起作用,请尝试不断将变换旋转设置为0, (代码在更新函数中看起来像这样,

    getcomponent<yourgameobject>().transform.rotation.z = 0
    getcomponent<yourgameobject>().transform.rotation.x = 0
    getcomponent<yourgameobject>().transform.rotation.y = 0
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-22
      • 2012-11-04
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      • 2014-07-09
      • 2015-06-21
      相关资源
      最近更新 更多