Как сделать механику взлома замков из Skyrim в Unity
Взлом замка в The Elder Scrolls V: Skyrim и серии Fallout — мини-игра. С помощью мышки вы выбираете положение отмычки, а с помощью клавиш A и D поворачиваете замок ножом. Если точка выбрана правильно, замок открывается, если нет — отмычка ломается. Если при повороте замка отмычка дрожит, значит вы близки к разгадке.
Разработчик игр Zeppelin Games на своем ютуб-канале рассказал, как создать такую механику взлома замков в Unity, а мы перевели. С кодом помог Константин Шевяхов, Unity Developer из Hypemasters.
Гиф из видео
Чтобы повторить эту механику, понадобятся:
- модель отмычки
- спрайты замка и фон
- золотой материал для отмычки
Настройка сцены в Unity
В Unity cоздайте пустой GameObject, назовите его «LockPick», и сбросьте настройки позиции (x, y, z = 0). Этот объект будет отвечать за движение отмычки.
Внутри «LockPick» создайте ещё один GameObject «LockPickingPin» и поместите в него отмычки. Распакуйте модель, удалите пустой объект LockPickingPin, камеру и освещение.
Создайте новый GameObject в корне сцены и назовите его «Lock», поместите в него два спрайта для замка. Слой вращающейся части замка InnerLock расположите выше статичного. Чтобы эта позиция не менялась, поставьте Order in Layer значение 1.
Далее убедитесь, что отмычка и замок правильно масштабированы и расположены перед камерой.
Промежуточный результат:
Теперь нужно поменять положение отмычки:
- подвиньте объект LockPickingPin, чтобы модель отмычки соответствовала значениям Transform родителя
- пивот LockPick отмычки расположите так, чтобы была подвижна только верхняя часть, как стрелка часов
- чтобы отмычка не проваливалась в замок, отодвиньте её по оси Z
Примените золотой материал к отмычке. Фон можно поменять на черный, чтобы лучше видеть сцену.
В InnerLock создайте новый GameObject и назовите его «PickFollow». Этот объект свяжет поворот отмычки и поворот внутренней части замка.
Расположите пивот PickFollow во внутренней части замка сверху, чтобы при повороте InnerLock пивот PickFollow тоже вращался.
Убедитесь, что сцена выглядит так, будто отмычка находится внутри замка и двигается вместе с ним. Сохраните проект и сцену.
C# и комментарии к нему
Добавьте скриптовый компонент на объект LockPick, назвав его «LockPick», и откройте в текстовом редакторе.
Объявление полей, свойств и события
Функция генерации замка
Функция изменения движения замка
Вернувшись в Unity, в настройках скрипта проставьте нужные референсы.
Нажмите Play и попытайтесь взломать замок.
Материал подготовлен командой XYZ Media.