【问题标题】:What is the code to add physics to the rigidbody in unity 5.0.0p2?在统一 5.0.0p2 中向刚体添加物理的代码是什么?
【发布时间】:2015-10-25 02:51:25
【问题描述】:

以下代码在 Unity 5.0.0p2 中似乎是错误的:

rigidbody2D.velocity.x = Input.GetAxis("Horizontal") * 10;

所以我尝试了以下代码:

GetComponent<Rigidbody2D>().velocity.x = Input.GetAxis("Horizontal") * 10;

但它仍然无法正常工作。出现如下几条错误消息。

  • BCE0043: Unexpected token: ).
  • BCE0044: expecting ), found '.'.
  • UCE0001: ';' expected. Insert a semicolon at the end.

我的代码有什么问题?

【问题讨论】:

    标签: unity3d game-physics unityscript rigid-bodies


    【解决方案1】:

    您的第一行将不再起作用,因为rigidbody2D 不再是MonoBehaviour 的属性。这已被删除,因此您必须改用GetComponent&lt;Rigidbody2D&gt;()

    但是,这并不能完全解决您的问题。你不能像你一样更新velocity,只设置x值。您将必须分配完整的向量。因此,将您当前的 velocity 复制到它自己的 Vector3 中,更新 x 并替换整个 velocity 向量。

    【讨论】:

    • 谢谢!我添加了 Vector3,它起作用了。这是我的代码,var moveHorizontal : float= Input.GetAxis ("Horizontal"); var movement : Vector3= new Vector3 (moveHorizontal, 0, 0); var rb: Rigidbody2D; rb = GetComponent.&lt;Rigidbody2D&gt;(); rb.velocity = movement * 4;
    【解决方案2】:

    错误消息可能与您发布的行无关,因为这看起来不错,尽管我们需要整个脚本来说明。

    但是,对于刚体的速度,分配如下:

    GetComponent<Rigidbody2D>().velocity = new Vector2(
        Input.GetAxis("Horizontal") * 10,
        GetComponent<Rigidbody2D>().velocity.y
    );
    

    这仅设置速度的x 轴并保留y 轴。

    【讨论】:

    • 我试过了,但没用。几条错误消息显示为“BCE0043: Unexpected token: ).”、“BCE0044: expecting ), found '.'.”、“UCE0001: ';'预期。在末尾插入分号。", "BCE0043: Unexpected token: )."等
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多