Проект «Искореженный металл» по мотивам Twisted Metal 4. UNITY. Часть 3

Поделиться.

Всем доброго времени суток, сегодня мы создадим портал, который по сюжету игры телепортирует нас в начало эскалатора.

Что нам для этого понадобиться? Первым делом хотелось бы добавить на сцену эффект портала, я буду использовать для этого систему частиц unity,  можно сформировать эффект с нуля, но я пойду другим путем — возьму за основу уже готовый эффект который можно бесплатно скачать с магазина Unity Assets Store, он называется KTK Effect Sample set 1.1 

Размещу эффект на сцене и с позиционирую,  немного подправлю настройки — такие как цвет и размер, посмотрим что вышло.

Все отлично, но вот незадача в игре портал всегда смотрит на игрока, а у нас он статичный. Как это исправить? Нужно писать скрипт, логика скрипта такова — объект на котором висит скрипт должен искать цель, а цель в свою очередь равна активной камере. В виде кода C# это выглядит так:

using UnityEngine;
using System.Collections;

public class CameraLookAt : MonoBehaviour
{
public Transform target;

void Update ()
{
if (Camera.main != null) {
target = Camera.main.transform;
}
transform.LookAt(target);

}
}

Вешаем наш скрипт на эффект и смотрим результат.

Все работает как и было задумано, теперь с какой стороны мы бы не подъехали к порталу он будет смотреть четко на нас. Можно переходить к реализации перемещения машины. И опять тут не обойтись без программирования, нужно создать скрипт, логика его будет такова —  если объект с тегом player находиться в коллайдере объекта на котором висит скрипт, тогда приватная переменная персонажа принимает значение  объекта с тегом player, после чего он исчезает, а индикатор принимает значение правда, а когда индикатор равен правде мы выполняем код в котором  задаем персонажу новую позицию, поворот и снова делаем его видимым, а также меняем индикатор на лож.

В виде кода C# это выглядит так:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class tport : MonoBehaviour {
private GameObject Car;
public GameObject Exit;
public bool Indicator;
// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
{
if (Indicator == true) {
Car.transform.position = Exit.transform.position;
Car.transform.rotation = Exit.transform.rotation;
Car.SetActive (true);
Indicator = false;
}
}
}

void OnTriggerStay(Collider other){
if (other.tag == «Player») {
Car = other.gameObject;
Car.SetActive (false);
Indicator = true;
}
}
}

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

И разумеется в параметрах коллайдера укажем наш Spawn.

Проверим!

Отлично, все работает как часы. Продолжение следует. Всем удачи и до скорых встреч 🙂 !


Поделиться.

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

Войти с помощью: 

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