Создание платформера на Unity [Часть 2]

Безопасный и надёжный обменник криптовалют на наличные — Insight
Сообщения
845
Реакции
589
Skype
zmey__xd
Доброго времени суток.
Сейчас мы продолжим создание нашего платформера . Речь пойдёт о управление камерой,сбор бонусов и способ умереть в игре.
503c09e18486424baef1bd56d324fbd4.png


Для того чтобы камера во время игры не стояла статично,а плавно двигалась за персонажем, используем заранее подготовленный скрипт.Делаем всё, как на гифке.

b82b3ae8d0794978a1fad7e35147f1b2.gif


Сам скрипт очень короткий и выглядит вот так:

Код:
using UnityEngine;

using System.Collections;

public class newcam : MonoBehaviour {
   public float dampTime = 0.5f;
   private Vector3 velocity = Vector3.zero;
   public Transform target;
 
   // Update is called once per frame
   void Update ()
   {
       if (target)
       {
           Vector3 point = camera.WorldToViewportPoint(new Vector3(target.position.x, target.position.y+0.5f,target.position.z));
           Vector3 delta = new Vector3(target.position.x, target.position.y+0.5f,target.position.z) - camera.ViewportToWorldPoint(new Vector3(0.f, 0.f, point.z)); //(new Vector3(0.5, 0.5, point.z));
           Vector3 destination = transform.position + delta;


           transform.position = Vector3.SmoothDamp(transform.position, destination, ref velocity, dampTime);
       }
     
   }
}


Main camera, на которую повешен этот скрипт, следует за объектом, который указан у него (скрипта) в публичной переменной target. Все публичные переменные в скриптах можно изменять прямо из редактора Unity. В нашем случае укажем на героя, запустим игру и проверим.

1cb613469cea46058302b0f1c0400c9e.gif


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

789eea684fd94154bc333814dd44313f.png


Для того что бы герой при прыжке в яму,так сказать умирал,сделаем следующие:
Для этого нам понадобятся пустой объект, которому добавим Box Collider (вытянутый по горизонтали) и поставим на нем в инспекторе галку Is trigger. Триггер в Unity отличается от простого коллайдера тем, что он не является препятствием, но при пересечении с объектом может вызвать какое-то событие. Объект переименуем в dieCollider и напишем немного кода для обработки падения.
0088322df4354e06824775d721d95240.gif


Как можно быстрее найдем во вкладке Assets и, после двойного клика, впервые познакомимся с MonoDevelop в рамках этой серии уроков.

c03effdf06a74597bd8ec8ff6dc47554.png


Для обработки пересечения с триггером используется функция OnTriggerEnter2D. Для простого коллайдера аналогично OnCollisionEnter2D.
Добавим следующий код:


Код:
void OnTriggerEnter2D(Collider2D col){

       if (col.gameObject.name == "dieCollider")
                       Application.LoadLevel (Application.loadedLevel);
   }

Как видите, все логично. Если имя объекта, с которым мы столкнулись, совпадает со строкой «dieCollider», то перезагружаем уровень — загружаем еще раз уровень, который уже загружен.
e6150dd57b004704876f2d52a5390fa9.gif


Сделаем префаб из dieCollider'а, расставим его копии во всех опасных местах Перейдём к нашим бонусам(Звёздам)

12498b96b61b4b11ade23e38ea2932da.gif


Теперь вернемся в MonoDevelop и напишем немного кода. Объявим float переменную score и добавим следующий код в функцию OnTriggerEnter2D

Код:
if (col.gameObject.name == "star") {
                       score++;
                       Destroy (col.gameObject);
               }


Он выполняет две простые функции — увеличивает результат на единицу и уничтожает объект, с которым мы столкнулись (в данном случае звезду). Так как из бонуса мы уже сделали префаб, раскидаем немного по уровню и посмотрим что будет, если их собирать. Обратите внимание на переменную score в правом нижнем углу экрана.

91dfa78c00c04285b3a5f0946ba50919.gif


Теперь давайте научимся отображать результат на экране, ведь никто не хочет играть в игру прямо в редакторе и смотреть где-то сбоку количество собранных звезд. В этом нам поможет функция OnGUI(), которая прекрасно умеет отрисовывать на экране текстовые блоки, кнопки и прочие полезные вещи.

Код:
void OnGUI(){
   GUI.Box (new Rect (0, 0, 100, 100), "Stars: " + score);
}


Рисуется квадрат с координатой левого верхнего угла (0,0) и размерами 100x100. В нем выводится текст, прямо говорящий нам о количестве собранных звездочек.

74de8bc6a33d40e2b9353540389c53ef.gif

В этом уроке мы научились собирать бонусы(с выводом статистики в углу экрана),умирать и возрождаться заного.
 
kaspersky keys
Верх