Пишем спаунер

Для начала скажу всем желающим чтобы я удалил раздел игр на сайте, это моё хоть небольшое развлечение, так что не удалю. Хоть и пришлось от игры Black Desert отказаться. Она требует много времени. А иные может позже еще будут писаться.

 

Сегодня я продолжил разбираться с разработкой компьютерных игр в Unity3d. Сегодня я буду рассматривать как написать спаунер.

 

Создаем новую сцену в Unity3d и начинаем.

 

Для начала создаем платформу, просто добавляем на сцену куб и изменяем его местоположение и размер. Выставляем Position 0,-1,0 Rotation не трогаем пусть по нулям так и будет и Scale 10, 1, 10. Далее создаем папку Prefabs и в ней создаем Prefab с именем playerPref, она будет добавлять игрока на сцену. Для того чтобы добавить в неё непосредственно самого игрока, то импортируем если еще не сделали Standard Assets, у меня данный ассет уже импортирован. Поэтому в данной папке я перехожу в Character Controlles, здесь беру непосредственно нашего персонажа, и перетаскиваю его сначала на сцену, а затем в созданный playerPref. И мы создали Prefab с нашим персонажем.

 

Теперь давайте займемся скриптом. Создаем новый скрипт, пишем название, я не стал долго думать назвал Spawn и дальше крепим его к камере. Открываем наш скрипт и пишем, сначала объявляем наш объект, пишем public GameObject playerPref. Сохраняем, переходим в Unity3d и цепляем наш Prefab к скрипту. Как это делается я говорил в прошлой статье.

 

Теперь будем писать функцию, которая в начале игры заспамит нашего игрока с заданными координатами. В функции Start пишем:

 

GameObject player = Instantiate (playerPref, (new Vector3 (0, 1, 0)), Quaternion.identity) as GameObject;

 

Сохраняем должно получится вот так:

Код персонажа в игре
Dante

 

И запускаем нашу игру, и мы имеем персонажа который появился на нашей платформе, и еще предупреждение в консоли Unity о том что используется два аудио слушателя на сцене. Это связано с тем что в нашего персонажа встроена камера и прослушивание звука, так что просто давайте отключим данную опцию на нашей камере, она находится в разделе Inspector. Просто возьмем выделим камеру и уберем галочку с Audio Listener. Все консоль больше не ругается.

 

Теперь если мы свалимся с нашей платформы, мы просто падаем вниз и все. Давай сделаем чтобы после какого-то расстояния падения мы возвращались на изначальное место. Для этого давайте создадим отдельную функцию, void, хотя давайте сделаем её private void, чтобы она у нас была приватной, чтобы никто её не мог изменить. И назовем её, кстати называть её по названию класса не стоит, так как он посчитает что мы пытаемся создать конструктор, так что называем к примеру SpawnPlayer. Теперь так как у нас player, объявлен только в функции Start то мы не сможем к нему обратиться, поэтому мы объявим его во всем классе, как приватную переменную. Поэтому в классе объявляем private GameObject player, для данного класса Spawn данная переменная является публичной, а для иных будет приватной и к ней нельзя будет обратится. Также давайте переместим функцию нашего спаунера из Start в созданную функцию SpawnPlayer и удалим из неё объявление GameObject в начале, так как оно сделано в классе, а в Start мы просто вызываем нашу функцию используя SpawnPlayer(). Это сделано для краткости.

 

Так же давайте сделаем проверку по высоте нашего персонажа, чтобы он после того как падал на определенное расстояние обратно возвращался на место появления. Для этого в функции Update, так как она отвечает за покадровое обновление, пишем: if(player.transform.position.y<-50) что означает если игрок(player) получит координаты( transform.position) по оси y меньше -50. Затем открываем фигурную скобку и пишем что случится, давайте просто напишем SpawnPlayer() и закроем фигурную скобку, то есть если персонаж упадет ниже 50 метров, то просто запустится функция SpawnPlayer(). У вас должен получится вот такой код:

Не оконченный спаунер
Dante

 

Сохраняем данный код запускаем игру, прыгаем с нашей платформы и видим недостаток который присутствует в коде. Он старательно спамит дополнительных персонажей, не удаляя прежних. В связи с этим, давайте в начале функции SpawnPlayer напишем что удаляем персонажа player, для этого пишем Destroy(player) и наш спаунер примет вот такой вид:

Написанный спаунер персонажа
Dante

 

Снова сохраняем, прыгаем с платформы, летим, пролетаем 50метров, и видим что старый персонаж удалился, а новый клон создан. Все хорошо, как и должно было быть.

 

Надеюсь для кого-то статья может оказаться полезной, в любом случае для меня было полезно. До новых статей.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *