Разрушаемость в Unity 5.

Spread the love

 

Всем доброго времени суток, сегодня мы с вами сделаем разрушаемые объекты в Unity3D.

Шаг один.

Для того чтоб создать разрушаемый объект, нам понадобиться иметь две модели. Первая-цельная модель. Вторая-ее аналог разбитый на части. Вы можете разбить любую модель на части используя программу Cinema 4D плагин Thrausi.

Я подготовил для вас модель трубы с которой мы и будем работать.

Скачать — Модель трубы.

Распакуйте архив и поместите модели в проект.

Шаг два.

Создайте скрипт с именем Zamena и замените его содержимое на код ниже:

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

public class Zamena : MonoBehaviour {
public Transform TrubaB;
public void DEAD () {
Instantiate (TrubaB, transform.position, transform.rotation);
Destroy (gameObject);
}
}

Шаг три.

Создайте скрипт с именем CreateCollider и замените его содержимое на код ниже:

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

[ExecuteInEditMode]

public class CreateCollider : MonoBehaviour {
public bool ActivateColliders;
void Update () {
if (ActivateColliders) {
foreach (Transform child in transform) {
child.gameObject.AddComponent<BoxCollider> ();
}

}
}
}

Шаг четыре.

Создайте скрипт с именем BOOM и замените его содержимое на код ниже:

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

public class BOOM : MonoBehaviour {
public float Radius;
public float Force;
// Update is called once per frame
void Update () {
Collider[] hitColliders = Physics.OverlapSphere (transform.position, Radius);
for (int i = 0; i < hitColliders.Length; i++) {
if (hitColliders [i].GetComponent<Zamena> ()) {
hitColliders [i].GetComponent<Zamena> ().DEAD ();
}
if (hitColliders [i].CompareTag («BOOM»)) {
if (!hitColliders [i].GetComponent<Rigidbody>()) {
hitColliders [i].gameObject.AddComponent<Rigidbody> ();
hitColliders [i].GetComponent<Rigidbody> ().AddExplosionForce (Force, transform.position, Radius, 3);
}
}
}
Destroy (gameObject, 0.2f);
}
void OnDrawGizmos(){
Gizmos.color = Color.red;
Gizmos.DrawWireSphere (transform.position, Radius);
}
}

Шаг пять.

Создайте на сцене пустышку пройдя в основном меню по пути GameObject>Create Empty и добавьте на нее скрипт  BOOM, установите параметр Radius на 15, а параметр Force на 2000 и создайте prefab пустышки перенеся ее из окна Heirarchy в окно Project.

Шаг шесть.

Разместите на сцене модель TrubaB и добавьте на нее скрипт CreateCollider поставьте галочку в пункте Activate Colliders, дождитесь момента когда на TrubaB создадутся коллайдеры, в пункте Activate Colliders уберите галочку. Создайте новый тег пройдя в Inspector по пути  Tag>Add Tag, нажмите на плюсик и введите название BOOM, примените этот Tag для всех дочерних объектов TrubaB, теперь сохраните TrubaB как Prefab перенеся его из окна Heirarchy в окно Project.

Шаг семь.

Разместите на сцене модель TrubaA и добавьте на нее скрипт Zamena, в графе TrubaB укажите Prefab TrubaB. После этого нужно добавить компонент Mesh Collider.

Для того чтоб оценить результат работы разместите Пустышку которую мы создавали в пятом пункте рядом с TrubaA.

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

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

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