CS1002; Ожидается. У меня есть точка с запятой

#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;