2

以下代码在 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.

我的代码有什么问题?

4

2 回答 2

4

您的第一行将不再起作用,因为rigidbody2D 不再是MonoBehaviour 的属性。这已被删除,因此您将不得不使用 aGetComponent<Rigidbody2D>()代替。

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

于 2015-08-03T08:17:26.290 回答
1

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

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

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

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

于 2015-08-03T09:24:20.867 回答