Я довольно новичок в Unity, и в настоящее время я пытаюсь применить кнопки для управления скоростью моего персонажа.
Здесь у меня есть некоторый код, который регулирует скорость моих персонажей в зависимости от ввода игроков по горизонтальной оси.
if (inGame)
{
//Movement
if (isMoving)
{
movement = Input.GetAxis("Horizontal") * movementSpeed;
Vector2 velocity = rb.velocity;
velocity.x = movement;
rb.velocity = velocity;}}
Я пытаюсь изменить это на экранные кнопки
public void SetDirectionLeft()
{
movingLeft = true;
Debug.Log("LEFT:" + movingLeft.ToString());
}
public void SetDirectionNull()
{
movingLeft = false;
movingRight = false;
Debug.Log("STILL");
}
public void SetDirectionRight()
{
movingRight = true;
Debug.Log("RIGHT:" + movingRight.ToString());
}
public void SetMovingTrue()
{
if (!isMoving)
{ isMoving = true; }
Debug.Log("MOVING:" + isMoving.ToString());
}
public void SetMovingFalse()
{
if (isMoving)
{ isMoving = false; }
Debug.Log("MOVING:" + isMoving.ToString());
}
void FixedUpdate()
{
if (inGame)
{
//Movement
if (isMoving)
{
if(movingLeft)
{
movement = -movementSpeed; //moves left on x axis -SPEED
}
else if (movingRight)
{
movement = movementSpeed; //moves right on x axis +SPEED
}
else
{
movement = 0; //NULL
}
Vector2 velocity = rb.velocity;
velocity.x = movement;
rb.velocity = velocity;
}
}
Я разделил геттеры и сеттеры, как вы можете видеть на изображении выше, и когда я нажимаю левой кнопкой я устанавливаю направление -1.0f, и если я нажимаю вправо, я вызываю метод для установки направления 1. Я также устанавливаю Moving в true при нажатии любой кнопки.
OnPointerDown, isMoving устанавливает TRUE OnPointerUp, isMoving устанавливает FALSE
теперь это работает. РЕДАКТИРОВАТЬ Я изменил SetDirection для использования bools и, как показано в следующем видео, isMoving успешно меняется на true и false. movingLeft и movingRight не меняются. Однако в журнале отладки вы можете видеть, что значения меняются, но не для игрока.
GYAZOVIDEO.mp4
Так что моя проблема в том, почему мои функции при вызове не меняют значение направления?
Вот 35 с лишним ошибок, которые я получаю в данный момент в отношении различных проблем. Мой генератор уровней появляется в бонусах, клонируя основное усиление, если два бонуса сталкиваются при появлении, я убиваю одного. По некоторым причинам это приводит к этим ошибкам, которые не влияют на мою текущую проблему. Мои клонированные исходные объекты имеют 2D коллайдеры, поэтому я не уверен, почему клонов нет. Снова новый для Unity, БОЛЬШАЯ ПРОГРАММА.
Мой проект будет более медленным, если вы попробуете его sh simmer.io/@ZakBrindle/burtle-jump