
Создание простейшего взрыва
Создаём C# скрипт с любым названием, к примеру «Boom». Теперь добавим переменные:
public float explosionRadius = 5;// радиус поражения
public float power = 500;// сила взрыва
private Rigidbody[] physicObject;// тут будут все физ. объекты которые есть на сцене
Затем идём в void Start()(void Update можно убрать) и записываем объекты которые имеют физику(Rigidbody) на сцене.
physicObject = FindObjectsOfType(typeof(Rigidbody)) as Rigidbody[];// Записываем все физ. объекты
После нам нужно всем объектам добавить силу которая заставит их отлетать, сделаем это через цикл.
for(int i = 0; i < physicObject.Length; i++){
}
Теперь нужно проверить объект в зоне поражения или нет, для этого в цикл добавляем проверку дабы не обрабатывать то что не надо.
for(int i = 0; i < physicObject.Length; i++){
if(Vector3.Distance(transform.position,physicObject[i].transform.position) <= explosionRadius){
}
}
Эта проверка будет проверять как далеко он эпицентра объект. Теперь добавим саму силу которая будет отталкивать объект с силой «power» в радиусе «explosionRadius» от точки «transform.position». Делаем это с помощью функции в Rigidbody AddExplosionForce. И получается что-то такое:
for(int i = 0; i < physicObject.Length; i++){
if(Vector3.Distance(transform.position,physicObject[i].transform.position) <= explosionRadius){
physicObject[i].AddExplosionForce(power,transform.position,explosionRadius);
}
}
И вообщем скрипт обретает такой вид:
using UnityEngine;
using System.Collections;
public class Boom : MonoBehaviour {
public float explosionRadius = 5;// радиус поражения
public float power = 500;// сила взрыва
private Rigidbody[] physicObject;// тут будут все физ. объекты которые есть на сцене
void Start(){
physicObject = FindObjectsOfType(typeof(Rigidbody)) as Rigidbody[];// Записываем все физ. объекты
for(int i = 0; i < physicObject.Length; i++){
if(Vector3.Distance(transform.position,physicObject[i].transform.position) <= explosionRadius){// Исключаем от обработки объекты которые достаточно далеко от взвыва
physicObject[i].AddExplosionForce(power,transform.position,explosionRadius);// Создание взрыва, с силой power, в позиции transform.position, c радиусом explosionRadius
}
}
}
}
Для применения достаточно скрипт повесить на пустышку и при запуске произойдет взрыв и объекты разлетятся. Скачать проект можно тут
Спасибо за внимание, удачи в создании игр. =)
0 комментариев