Жизнеспособно ли создание моих собственных «Горизонтальных и вертикальных осей» для использования с контроллером персонажей? - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь воссоздать «Горизонтальные» и «Вертикальные» оси по умолчанию, которые можно найти в единстве.

Причина, по которой я это делаю, заключается в том, что я делаю движение, используя значения X и Y вектора2 для горизонтального и вертикального движения, и я хочу иметь возможность перепривязывать ключи для движения во время выполнения.

Оси в единстве не могут быть изменены во время выполнения.

Вот что я сделал

public class HorzontalVerticalVelocity : MonoBehaviour
{

 public float horizontalVelocity;
 public float verticalVelocity;

private void Update()
{
    #region Horizontal

    if (Input.GetKey(GameManager.GM.right))
    {
        if (horizontalVelocity > 1) // Precausion to stop velocity going outside bounds.
        {
            horizontalVelocity = 1;
            return;
        }
        horizontalVelocity += 0.1f;

    }
    else if(Input.GetKey(GameManager.GM.left))
    {
        if (horizontalVelocity < -1)
        {
            horizontalVelocity = -1;
            return;
        }
        horizontalVelocity -= 0.1f;
    }
    else // Reset to zero when no input is recieved.
    {
        if (horizontalVelocity == 0)
            return; // dont run the code if we are stationary!
        horizontalVelocity = Mathf.Lerp(horizontalVelocity, 0, 1f);
    }

    #endregion

    #region Vertical
    if (Input.GetKey(GameManager.GM.up))
    {
        verticalVelocity += 0.1f;
    }
    else if (Input.GetKey(GameManager.GM.down))
    {
        verticalVelocity -= 0.1f; 
    }
    else // Reset to zero when no input is recieved.
    {
        if (verticalVelocity == 0) 
            return; // dont run the code if we are stationary!
        verticalVelocity = Mathf.Lerp(verticalVelocity, 0, 1f);
    }

    #endregion


    // Clamp velocity to a reasonable limit.
    horizontalVelocity = Mathf.Clamp(horizontalVelocity, -1, 1);
    verticalVelocity = Mathf.Clamp(verticalVelocity, -1, 1);
}
}

У меня есть концепция вниз для оси, значение устанавливается и возвращается к нулю, когда нет ввода.

Однако я заметил несколько проблем

Главным из них является то, что он чрезвычайно неуклюж по сравнению с использованием единой горизонтальной оси для движения.

Любой совет, как я могу сделать это наравне с этим? или я должен просто переделать способ, которым я добавляю скорость персонажу в этот момент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...