Как настроить кнопку в Unity?

137
28 января 2021, 23:40

Есть вот такой код:

using UnityEngine;
using System.Collections;
// Performs a mouse look.
public class FPSInput : MonoBehaviour
{
    public float speed_run;
    public float jumpPower;
    private float gravity_character;
    private Vector3 move_vector;
    private CharacterController My_controller;
    private void Start()
    {
        My_controller = GetComponent<CharacterController>();
    }
    private void Update()
    {
        PlayerMove();
        Gravity();
    }
    private void PlayerMove()
    {
        move_vector = Vector3.zero;
        if (Input.GetButtonDown("Up"))
        {
            move_vector.x = speed_run;
        }
        if (Vector3.Angle(Vector3.forward, move_vector) > 1f ||
            Vector3.Angle(Vector3.forward, move_vector) == 0)
        {
            Vector3 direct =
                Vector3.RotateTowards(transform.forward, move_vector, speed_run, 0.0f);
            transform.rotation = Quaternion.LookRotation(direct);
        }
        move_vector.y = gravity_character;
        My_controller.Move(move_vector * Time.deltaTime); // Move player
    }
    private void Gravity()
    {
        if (!My_controller.isGrounded) gravity_character -= 20f * Time.deltaTime;
        else gravity_character = -1f;
        if (Input.GetKeyDown(KeyCode.Space) && My_controller.isGrounded)
        {
            gravity_character = jumpPower;
        }
    }
}

он включён в игрока. Но при запуске выходит такая ошибка:

ArgumentException: Input Button Up is not setup.
 To change the input settings use: Edit -> Project Settings -> Input
FPSInput.PlayerMove () (at Assets/FPSInput.cs:28)
FPSInput.Update () (at Assets/FPSInput.cs:21)

Подскажите новичку как настроить кнопку.

Answer 1

Проблема заключается в этой строке:

Input.GetButtonDown("Up")

А значит она следующее, Unity не понимает какую кнопку вы имеете в виду. Все возможные кнопки, на которые реагирует метод Input.GetButtonDown(), указываются в настройках Input проекта. Как раз туда вас Unity и пытается отправить (Edit -> Project Settings -> Input). В этом окне вы можете добавить соответствующую кнопку с названием "Up", по умолчанию такой кнопки в этом списке нет. По этому, когда Unity доходит до вызова метода Input.GetButtonDown(), то ищет указанное значение "Up" именно в этих настройках. Вы можете добавить новую кнопку с таким названием в этих настройках или изменить параметр, с которым вызываете Input.GetButtonDown(), что ваша ошибка больше не появлялась.

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

Если остались вопросы по поводу Input, можете посмотреть официальный туториал по этой теме (на простом английском).

Если добавление кнопки - не то, что вам требуется, и вы хотите просто обрабатывать нажатие какой-либо клавиши клавиатуры, воспользуйтесь Input.GetKeyDown().

READ ALSO
Я ответила B и F Но не уверена в верности ответа. Подскажите правильный ответ

Я ответила B и F Но не уверена в верности ответа. Подскажите правильный ответ

You are testing an applicationThe application includes methods named Calculatelnterest and LogLine

128
Как вызвать функцию при нажатии на раскрытие узла TreeView?

Как вызвать функцию при нажатии на раскрытие узла TreeView?

Как вызвать функцию при нажатии на раскрытие узла TreeView ?

109
Listview как произвести поиск в строке # или 2 и если они есть то

Listview как произвести поиск в строке # или 2 и если они есть то

нужно найти в строке # или 2, и если есть то записать в строку столбца н/у, а если нету то "у"

122
Публикация программы в microsoft store для windows 10

Публикация программы в microsoft store для windows 10

Что мне нужно? 1Выставить мою бесплатную программу на майкрасофт стор, с включающим внутренную оплату через майкрасофт

129