Во-первых, вы вообще никогда не должны публиковать здесь ИЗОБРАЖЕНИЯ кода или ошибок!
Скорее скопируйте и вставьте необработанный текст в ваш вопрос и отформатируйте его соответствующим образом. *
Вы не можете использовать
var tiltAroundZ;
без предварительной инициализации. В основном именно то, что ошибки говорят вам. Просто измените его на
float tiltAroundZ = 0f;
Вы объявили tiltAngle
как локальную переменную в Start
private void Start()
{
...
var tiltAngle = 30.0;
...
}
, чтобы она не была доступна для другихметод. Скорее сделайте это полем в классе. Вероятнее всего, вы также захотите, чтобы это было float
, а не double
private float tiltAngle = 30.0f;
Keycode
- это опечатка: это капитал C
in KeyCode
Ваш экземпляр Rigidbody
хранится в поле с именем rb
, поэтому оно должно быть
rb.AddForce(new Vector3(moveHorizontal, 0.0f, moveVertical) * speed);
Еще кое-что
Обе инициализации
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
не имеют смысла на этом этапе. В любом случае они всегда будут 0
, так как при запуске приложения вход еще не обрабатывается.
еще одна огромная проблема в вашем коде, а именно эта строка
while(Input.GetKey(Keycode.A)||Input.GetKey(Keycode.D))
Вы почти никогда не хотите никакой цикл while
в Unity - особенно нетв методе Update
!
Это просто остановит ваше приложение / весь редактор Unity до тех пор, пока не будет выполнено условие continue
, поскольку Input.GetKey
никогда не изменит свое значение в одном кадре!
Я не совсем понимаю, какова ваша цель с этим, но вместо того, чтобы продолжать звонить AddForce
несколько раз, вы должны вместо этого вызывать его только один раз с правильным количеством силы вместо этого.
Вы также никогда не сбрасываете constant
поэтому после достижения >= 10
вы игнорируете любой пользовательский ввод ...
Ошибки от CameraTitle
не могут быть исправлены здесь без показа этого кода.