#c# #unity3d #game-development
#c# #unity3d #разработка игр
Вопрос:
Я пишу скрипт на C # для проигрывателя, который использует клавиши WASD для перемещения. Мой сценарий приведен ниже.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerAction : MonoBehaviour
{
public Rigidbody rigid;
public float horizontal;
public float vertical;
public float rate = 30.5f;
// Start is called before the first frame update
void Start()
{
rigid = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update()
{
horizontal = Input.GetAxis("Horizontal");
vertical = Input.GetAxis("Vertical");
Vector3 direction = new Vector3(horizontal, 0.0f, vertical);
rigid.AddForce(direction * rate);
}
}
Однако в моем коде вообще нет ничего плохого, я просто хотел бы знать, как уже были реализованы ключи WASD. Может ли кто-нибудь объяснить, как это должно быть?
Комментарии:
1. Проверьте в диспетчере ввода, какие значения присвоены «Horizontal» и «Vertical».
Ответ №1:
Входные данные Unity управляются через Диспетчер входных данных (Редактировать -> Настройки проекта, затем выберите категорию входных данных).
Диспетчер ввода использует следующие типы элементов управления:
- Клавиша относится к любой клавише на физической клавиатуре, такой как W, Shift или пробел. Кнопка относится к любой кнопке на физическом контроллере (например, геймпадах), например кнопке X на контроллере Xbox One
Input.GetKey("Jump") {...};
- Виртуальная ось (множественное число: оси) сопоставляется элементу управления, такому как
кнопка или ключ. Когда пользователь активирует элемент управления, ось получает значение в
диапазон значений [-1..1]. Вы можете использовать это значение в своих скриптах
horizontal = Input.GetAxis("Horizontal");
Ваша строка кода ссылается на Ось, определенную в диспетчере ввода с именем «Horizontal». Сама эта ось реализует положительные кнопки, а также отрицательные кнопки. В данном случае A / D, из которого вы затем можете косвенно получать входные данные в своем коде.