2D Клон Mario. Часть 1 (Unity C#)

mario-1

Часть 2.

В этом уроке мы создадим одного из самых известных игровых персонажей — Марио! Я думаю, все знают историю этого парня водопроводчика. Он борется с монстрами, что бы встретиться с принцессой. В этом уроке я покажу вам, как создать анимацию и маленькие примеры для некоторых функций игры.

Перед началом, загрузите спрайты здесь или найдите их в google. Эти спрайты понадобятся для создания анимации и некоторых игровых объектов.

screen-shot-2015-03-16-at-13-13-51Начнём с персонажа Марио. Создайте папку Sprites и импортируйте туда спрайты. Выберите спрайт и переключите Sprite Mode на Multiple. Если вы используете другой спрайт, количество пикселей на единицу может отличаться, но для моего спрайта это 32. Откройте редактор спрайтов.

Нажмите slice в левом верхнем углу и разрежьте спрайт на много маленьких частей.

screen-shot-2015-03-16-at-13-18-05

Мы будем использовать эти 5 кадров для создания анимации для Марио. Нажмите на кадры и переименуйте их. (No1: Mario_Stand, No2: Mario_Walk_1, No3: Mario_Walk_2, No4:Mario_Walk_3, No5:Mario_Jump ) Сохраните изменения и вернитесь к сцене. Разверните файл спрайта и вы увидите 5 ваших переименованных спрайтов. Выберите 3 спрайта Mario_Walk и перетащите spriteна сцену. Дайте имя вашей анимации ходьбы. Нажмите Play и проверьте анимацию. Теперь откройте окно анимации и создайте новый клип. Перетащите Mario_Stand и измените значение Samples на 1, потому что у нас только один кадр. Сделайте то же самое с Mario_Jump. Теперь откройте окно аниматора.screen-shot-2015-03-16-at-14-27-52

Здесь вы видите название анимаций без спрайтов. Нажмите на MarioStand и установите эту анимацию по умолчанию. Вы можете создавать переходы между анимациями кликнув правой кнопкой мыши по ним. Щёлкните правой кнопкой мыши на анимации, нажмите Make Transition и выберите MarioWalk. Эти две анимации свяжутся между собой. Создайте четыре связи как на рисунке выше. Эта схема говорит «При старте, будет воспроизводится анимация MarioStand. Можно вызвать анимацию MarioWalk, если текущая анимация MarioStand. В любом состоянии можно вызвать анимацию MarioJump.» Нам нужны два параметра, что бы автоматически вызывать эти анимации. Добавьте параметр Speed типа данных float и параметр isTouched типа bool.

screen-shot-2015-03-16-at-13-52-56 Выберите стрелку от MarioStand к MarioWalk и вы увидите условия в окне инспектора. Выберите скорость и измените этот параметр, если он больше 0. Это означает, что если параметр скорости больше нуля будет вызвана анимация ходьбы. Так как Марио может прыгать в любой ситуации, выберите стрелку идущую от Any State и установите isTouched = false. И наконец, Марио может стоять после каждого прыжка. Выберите стрелку от MarioJump к MarioStand и установите isTouched = false. isTouched — логическое значение и будет проверять в сценарии, сталкивается Марио с землёй или нет.

Добавьте Rigidbody2D и BoxCollider2D к вашему объекту Марио. Вы можете создать землю используя спрайты. Добавьте слой ground для земли. Теперь создайте C# скрипт для Марио.

Добавьте пустой дочерний объект с именем GCheck. Добавьте для него иконку, что бы видеть его положение. Переместите его в правый нижний угол объекта Марио т.к. он проверяет столкновение Марио с землёй, когда он пересекается с землёй. Теперь проверьте используя стрелки влево, вправо и пробел для прыжка. Если всё работает, Марио должен двигаться в обе стороны. Вы можете оптимизировать движение путём изменения значений скорости.

Оригинал.