Создание сцены и скрипта
Создайте новую сцену: File -> New Scene, выберите Basic Built-in (с камерой и светом), нажмите Create. Сохраните сцену: Cmd+S (macOS) или Ctrl+S (Windows). Назовите сцену UserInput.
Создайте новый скрипт EnableLight. Этот скрипт будет включать/выключать свет при нажатии кнопки. Поместите скрипт на основную камеру и сохраните сцену.
Скрипт EnableLight
Откройте скрипт EnableLight в Visual Studio. Удалите ненужные подключения и методы. Создайте поле для ссылки на компонент света:
public Light mainLight;
В методе Update отслеживайте нажатие пробела:
void Update()
{
if (Input.GetKeyUp(KeyCode.Space))
{
mainLight.enabled = !mainLight.enabled;
}
}
Input.GetKeyUp(KeyCode.Space) срабатывает один раз при отпускании клавиши пробела. mainLight.enabled устанавливает противоположное значение активности компонента света. Перетащите Directional Light на поле mainLight в Unity. Запустите Unity и проверьте работу скрипта.
Изменение цвета объекта
Создайте сферу и новый скрипт ChangeColors. Поместите скрипт на сферу. В скрипте создайте приватное поле для компонента MeshRenderer:
private MeshRenderer mesh;
В методе Awake найдите компонент:
void Awake()
{
mesh = GetComponent<MeshRenderer>();
}
В методе Update отслеживайте нажатие клавиш и меняйте цвет:
void Update()
{
if (Input.GetKeyDown(KeyCode.G))
{
mesh.material.color = Color.green;
}
if (Input.GetKeyDown(KeyCode.R))
{
mesh.material.color = Color.red;
}
if (Input.GetKeyDown(KeyCode.B))
{
mesh.material.color = Color.blue;
}
}
Input.GetKeyDown() срабатывает при нажатии клавиши. Запустите Unity и проверьте работу скрипта.
Перемещение объекта
Создайте новый скрипт MovePlayer и поместите его на сферу. В методе Update отслеживайте нажатие клавиш со стрелками и клавиш W, S, A, D для перемещения сферы:
public float speed = 5f;
void Update()
{
float verticalInput = Input.GetAxis("Vertical");
float horizontalInput = Input.GetAxis("Horizontal");
transform.Translate(Vector3.forward * verticalInput * speed * Time.deltaTime);
transform.Translate(Vector3.right * horizontalInput * speed * Time.deltaTime);
}
Input.GetAxis("Vertical") и Input.GetAxis("Horizontal") возвращают значения от -1 до 1 в зависимости от нажатых клавиш. Time.deltaTime обеспечивает плавное перемещение независимо от частоты кадров.
Вы научились отслеживать нажатия клавиш и использовать полученную информацию для взаимодействия с игровыми объектами, изменяя их состояние (активность, цвет) и положение. Этот подход позволяет создавать интерактивные элементы управления в играх на Unity.