Переключиться с клавиатуры на сенсорный экран - PullRequest
0 голосов
/ 17 мая 2019

Как я могу переключить это «движение» (горизонтальное вращение вокруг клавиатуры с помощью клавиатуры) в Обновлении до платформы Android, я имею в виду сенсорное движение (работает на сенсорном экране).

Я попытался вместо «Горизонтальный» поставить «Мышь X» или «Мышь Y», чтобы она работала с мышью и сенсорным экраном, но просто неправильно. Я знаю, что это неправильно и неиграбельно, как это.

public class Player : MonoBehaviour {

    public float moveSpeed = 350f;

    float movement = 0f;

    // Update is called once per frame
    void Update()
    {
        movement = Input.GetAxisRaw("Horizontal");
        //movement = Input.GetAxisRaw("Mouse X");
        //movement = Input.GetAxisRaw("Mouse Y");
    }
    private void FixedUpdate()
    {
        transform.RotateAround(Vector3.zero, Vector3.forward, movement * Time.fixedDeltaTime * -moveSpeed);
    }
}

1 Ответ

0 голосов
/ 17 мая 2019

Вы должны понимать, что сенсорный экран это не одно.Вы можете решить использовать экран, виртуальный джойстик, кнопку или что-то еще.Input.GetAxis и GetAxisRaw просто говорят Unity использовать то, что у вас есть в системных настройках Input по умолчанию, и использовать это в качестве входа.https://docs.unity3d.com/Manual/ConventionalGameInput.html

Так, например, когда вы используете Input.GetAxis («Горизонтальный»), если вы установили в настройках Unity Input W как положительный, а S как отрицательный вход, Unity будет использовать вашу клавиатуру и эквивалентныйдля Input.GetKeyDown и получить значение W при нажатии.Поскольку значение клавиатуры всегда равно 1 или 0, использовать GetAxis или GetAxisRaw будет одинаково (поскольку GetAxisRaw всегда получает 1 или 0, но при использовании клавиатуры вы всегда получаете 1 или 0) ... настоящий джойстик получит значение изОт -1 до 1 с 0 как «не используется джойстик» 1 как максимальное положительное значение и -1 как максимальное отрицательное значение.

Чтобы заменить тип поведения клавиатуры, вы можете, например, создать 2 кнопки с UnityСистема пользовательского интерфейса и, если они нажаты (есть много способов узнать, нажата ли кнопка пользовательского интерфейса, например, метод OnButtonDown), вы установите плавающее значение равным 1f, 0f, если ButtonUp ... таким образом, вы сможетеполучить 0f или 1f, как в системе ввода по умолчанию, вы получите положительное значение 1f от виртуальной кнопки вместо получения положительного значения ввода от кнопки W.

Если вы хотите значение от 0f до 1f (как 0.4) вам понадобится виртуальный джойстик или что-то в этом роде.Вы можете использовать этот короткий учебник, чтобы сделать его: https://youtu.be/uSnZuBhOA2U

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

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