Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Ошибка Unity скрипт

Чёрный Император акчоТ Ученик (244), на голосовании 5 месяцев назад
Написал скрипт, чтобы игрок мог двигаться, налепил скрипт на игрока, но тут пошло что-то странное, либо это я слепой, и не виду ошибок в коде, либо тупит юнити.

Фото ошибки: https://disk.yandex.ru/i/5zWN8NS1akayBQ


Скрипт:

using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
public Rigidbody rb;

public float runSpeed = 500f;
public float strafeSpeed = 500f;
public float jumpForce = 15;

protected bool strafeLeft = false; protected bool strafeRight = false;
protected bool doJump = false;
void Update() {
if(Input.GetKey("a")) {
strafeLeft = true; } else
{ strafeLeft = false
}
if (Input.GetKey("a")) {
strafeRight = true; } else
{
strafeRight = false; }
if(Input.GetKeyDown("space"))
{ doJump = true;
} }
void FixedUpdate()
{ rb.AddForse(0, 0, runSpeed * Time.deltatime);
}}
Голосование за лучший ответ
Malenkiuprinter Kpachemokoc Знаток (384) 6 месяцев назад
 using UnityEngine; 

public class PlayerMovement : MonoBehaviour
{
public Rigidbody rb;

public float runSpeed = 500f;
public float strafeSpeed = 500f;
public float jumpForce = 15;

protected bool strafeLeft = false;
protected bool strafeRight = false;
protected bool doJump = false;

void Update()
{
if (Input.GetKey("a"))
{
strafeLeft = true;
}
else
{
strafeLeft = false;
}

if (Input.GetKey("d")) // Исправлено на "d" для стрейфа вправо
{
strafeRight = true;
}
else
{
strafeRight = false;
}

if (Input.GetKeyDown(KeyCode.Space)) // Исправлено на KeyCode.Space для прыжка
{
doJump = true;
}
}

void FixedUpdate()
{
rb.AddForce(0, 0, runSpeed * Time.fixedDeltaTime); // Исправлено на AddForce и fixedDeltaTime
}
}
Исправления включают в себя:

Исправление неправильных условий для стрейфа влево и вправо (было Input.GetKey("a") для обоих случаев).
Исправление вызова Input.GetKeyDown("space") на Input.GetKeyDown( KeyCode.Space ).
Исправление вызова AddForse на AddForce в методе FixedUpdate.
Исправление опечатки в вызове Time.deltaTime на Time.fixedDeltaTime в методе FixedUpdate.
Похожие вопросы