Повторение: смена системы ввода
Часть раздела Создание настоящих игр путешествия по Unity на Coddy. Урок 47 из 56.
Задание
СреднеЭта волшебная палочка с пузырями была написана для старого класса Input. Она работает в проекте, настроенном на Both, но этот проект настроен как новый проект Unity 6 (Active Input Handling: Input System Package): нажмите Play, и первый вызов Input вызовет исключение InvalidOperationException. Перенесите скрипт на Input System, сохранив все его функции:
- Стрелки или WASD перемещают палочку по лужайке со скоростью
speedединиц в секунду, без ускорения по диагонали. - При нажатии Jump над палочкой, на высоте 1.5 единицы, появляется пузырь. Пока Jump удерживается, пузырь растёт со скоростью
growRateв секунду, вплоть доmaxSize. При отпускании выведите в журнал его размер, напримерBubble: 0.8. - Щелчок левой кнопкой мыши лопает все пузыри и выводит в журнал их количество, например
Popped 3.
Используйте действия проекта Move и Jump, а также Mouse.current, и удалите из скрипта все вызовы Input.. Нажмите Play и попробуйте, затем нажмите Check.
Попробуйте сами
using UnityEngine;
public class Wand : MonoBehaviour
{
public float speed = 4f;
public float growRate = 1f;
public float maxSize = 1.5f;
public GameObject bubblePrefab;
private Transform bubble;
void Update()
{
Vector3 move = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical"));
transform.position += move.normalized * speed * Time.deltaTime;
if (Input.GetButtonDown("Jump"))
{
bubble = Instantiate(bubblePrefab, transform.position + Vector3.up * 1.5f, Quaternion.identity).transform;
}
if (Input.GetButton("Jump") && bubble != null)
{
float size = Mathf.Min(bubble.localScale.x + growRate * Time.deltaTime, maxSize);
bubble.localScale = Vector3.one * size;
}
if (Input.GetButtonUp("Jump") && bubble != null)
{
Debug.Log("Bubble: " + bubble.localScale.x.ToString("F1"));
bubble = null;
}
if (Input.GetMouseButtonDown(0))
{
GameObject[] bubbles = GameObject.FindGameObjectsWithTag("Bubble");
foreach (GameObject b in bubbles) Destroy(b);
Debug.Log("Popped " + bubbles.Length);
}
}
}
Все уроки раздела Создание настоящих игр
1Текст на экране
Холст и текстПокажем счётФорматирование чиселТаймер обратного отсчётаПовторение: спидометр4Сцены и уровни
Загрузить сценуПерезапустить уровеньСледующий уровеньСохранить между сценамиПовторение: выбор уровня7Управление временем
Пауза с timeScaleЗамедленное движениеНемасштабируемое времяПовторение: Bullet Time10Проект: 3D-платформер
ТрассаДвижущиеся платформы2Кнопки и экраны
Кнопки и onClickЛямбдыСвязи в InspectorВключение и выключение панелейШкалы здоровьяПовторение: магазин улучшений5Сохранение с помощью PlayerPrefs
Сохранение числаЗагрузка со значением по умолчаниюРекордСохранение настроекПовторение: монеты в банке3Менеджер игры
Один скрипт управляет игройОдиночкаСостояния игрыПереключение состоянияПовторение: менеджер раундов6Проект: бесконечный раннер
Три полосыПрепятствия впереди9Новая система ввода
Две системы вводаКлавиатура и мышьНажатие в текущем кадреДействия вводаПовторение: смена системы ввода