Как заставить Input.GetAxis ("Mouse X") получить значение, даже когда мышь остановлена? - PullRequest
0 голосов
/ 14 мая 2019

Я управляю игровым объектом с помощью мыши горизонтально.Объект перемещается влево или вправо в зависимости от положения мыши, но как только мышь перестает двигаться, объект также останавливается.То, что я хочу, - это если я перетаскиваю мышь к правой стороне экрана и прекращаю движение мыши, тогда я хочу, чтобы объект двигался вправо, пока мышь находится в правой половине экрана и наоборот.В настоящее время Input.GetAxis ("Mouse X");возвращает значение 0 при остановке.Вот код:

float horizontalInput = Input.GetAxis("Mouse X");

Я уже пытался использовать это исправление, но я не получил желаемого результата, так как я использую кнопку мыши, чтобы переместить игрока в прямом направлении.

if (Input.GetMouseButton(0) && (horizontalInput == 0f))
{
    if (Input.mousePosition.x < Screen.width / 2)
    {
        horizontalInput = -1f;  
    }
    else if (Input.mousePosition.x > Screen.width / 2)
    {
        horizontalInput = 1f;
    }
}

Есть ли другой способ добиться этого?Огромное спасибо за ваше время!

Я исправил это, настроив вышеприведенные условия, если это необходимо!

if (Input.GetMouseButton(0))
{
    if (Input.mousePosition.x < Screen.width / 2 && (horizontalInput < 0f))
    {
        horizontalInput = -1f;
    }
    if (Input.mousePosition.x > Screen.width / 2 && (horizontalInput > 0f))
    {
        horizontalInput = 1f;
    }             
}

1 Ответ

1 голос
/ 14 мая 2019

Просто проверьте значение горизонтального ввода, если оно не равно 0, и сохраняйте последнюю позицию каждый раз (просто переопределяйте ее каждый раз).Когда он равен 0, проверьте последнюю сохраненную позицию и, если она находится справа, продолжайте перемещать объект, пока значение горизонтального ввода не станет равным 0 или пока вы не достигнете края экрана.Конечно, в обновлении вам даже не нужно циклировать какое-то время, вам просто нужно проверить, установлен ли горизонтальный вход 0 или нет 0.

что-то вроде этого:

float horizontalInput = Input.GetAxis("Mouse X");
float lastPos = 0f;
if(horizontalInput  != 0){
  //move object with the mouse the code you currently use
  lastPos = Input.mousePosition.x;
}else if(horizontalInput == 0 && !EndOfScreen(currentObjectPos.x) && RighLeftScreen(lastPos)){
  Move();
}

конечно это просто псевдокод.Вам нужно будет написать функцию, чтобы узнать, находится ли EndOfScreen справа налево, вам нужно будет знать, находитесь ли вы на правой или левой стороне экрана (метод RighLeftScreen) и, наконец, вам нужно переместить объект влево или вправо до концаэкрана.

Это просто основная идея.

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