#c# #visual-studio #unity3d #syntax-error
#c# #visual-studio #unity3d #синтаксическая ошибка
Вопрос:
Я следую руководству Brackeys по созданию игры от первого лица. И я создаю сценарий перемещения символов и пытаюсь протестировать, но получаю ошибку
CS1002 : ; ожидается.
Вот мой код.
public CharacterController controller;
float x = Input.GetAxis("Horizontal");
float z = Input.GetAxis("Vertical");
Vector3 move = transform right * x * transform forward * z;
controller.Move(move);
Комментарии:
1. Пожалуйста, предоставьте полный исходный код вашего класса. В противном случае мы можем только догадываться, где кроется синтаксическая ошибка. Для общего синтаксиса c # взгляните на спецификацию языка c #
2. Пожалуйста, укажите номер строки, чтобы лучше понять ситуацию. Я думаю, это может быть при создании переменной перемещения. Потому что вы написали transform right и transform forward . На самом деле это transform.right и transform.forwad . Там есть оператор точки. Вы это пропустили.
3. Преобразование (пробел) вперед * z Я бы предположил, что он думает, что так и должно быть, потому что вы вводите
Ответ №1:
Vector3 move = transform right * x * transform forward * z;
Должно быть:
Vector3 move = transform.right * x transform.forward * z;
Комментарии:
1. Все еще не работает. ошибка CS0019: оператор ‘ *’ не может быть применен к операндам типа ‘Vector3’ и ‘Vector3’
2. Верно, я забыл, что вы сначала умножали векторы на скаляры — измените его на transform.right * x transform.forward * z; и все должно быть в порядке. Я обновил свой ответ.
Ответ №2:
Вы не используете оператор точки для доступа к атрибутам компонента преобразования объекта. В Unity доступ к каждому атрибуту или методу осуществляется оператором dot .
Вы должны преобразовать объявление переменной перемещения следующим образом,
Vector3 move = transform.right * x * transform.forward * z;