Какой код для добавления физики к твердому телу в Unity 5.0.0p2?

Следующий код кажется неправильным в 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.

Что не так с моим кодом?


person Dakshila Kamalsooriya    schedule 03.08.2015    source источник


Ответы (2)


Ваша первая строка больше не будет работать, потому что жесткое тело2D больше не является свойством MonoBehaviour. Он был удален, поэтому вам придется использовать вместо него GetComponent<Rigidbody2D>().

Однако это не решает полностью вашу проблему. Вы не можете обновить velocity, как это делаете, только установив значение x. Вам нужно будет назначить полный вектор. Так что скопируйте текущий velocity в собственный Vector3, обновите x и замените весь velocity вектор.

person Bart    schedule 03.08.2015
comment
Спасибо! Я добавил Vector3, и это сработало. Вот мой код var moveHorizontal : float= Input.GetAxis ("Horizontal"); var movement : Vector3= new Vector3 (moveHorizontal, 0, 0); var rb: Rigidbody2D; rb = GetComponent.<Rigidbody2D>(); rb.velocity = movement * 4; - person Dakshila Kamalsooriya; 04.08.2015

Сообщения об ошибках, вероятно, не относятся к опубликованной вами строке, поскольку это кажется нормальным, хотя нам нужно, чтобы об этом говорил весь скрипт.

Однако, что касается скорости твердого тела, назначьте ее так:

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

Это устанавливает только ось x скорости и сохраняет ось y.

person Arx    schedule 03.08.2015
comment
Я пробовал это, но это не сработало. Несколько сообщений об ошибках отображались как BCE0043: Unexpected token:)., BCE0044: expecting), found '.'., UCE0001: ';' ожидал. Вставьте точку с запятой в конце., BCE0043: Неожиданный токен:). и т.п. - person Dakshila Kamalsooriya; 04.08.2015