Показать сообщение отдельно
Старый 17.06.2010, 01:40   #1
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Unity3D - давайте повзрываем!

Давайте по взрываем!
В данной статейке я бы хотел заострить внимание на готовых материалах, которые можно скачать с официального сайта unity3d.com, и в частности пакету Detonator. Но так как времени у меня не так много, то статья будет краткой, и лучше будем задавать вопросы о том, кому что не понятно.
Доступные ресурсы можно скачать по адресу: http://unity3d.com/support/resources/
Пакет Detonator: http://unity3d.com/support/resources...sion-framework

Итак, приступим.
1. Создаем новый проект, так как я рассказывал в прошлой статье.

2. Скачиваем пакет Detonator по приведенной выше ссылке и импортируем в проект. Для этого в меню «Assets» выбираем пункт «Import Package…». Оставляем все галочки и жмем на кнопку «Import»



3. Структура папок проекта должна получиться следующая:

Я нарочно раскрыл папку «Prefab-examples», т.к. мы будем далее ей пользоваться.

4. Создадим сцену из кубиков, так чтобы можно было что-то по взрывать. Не забываем добавлять компонент Rigid Body кубикам, так чтобы они учувствовали в симуляции физики, а не были просто препятствием. У меня получилось примерно так:

Как создать кубики, добавить им компонент Rigid Body – читайте в предыдущей статье.

5. Создадим папку Scripts и в ней создадим новый скрипт C# с названием DetonateIt. И следующим содержанием:

using UnityEngine;
using System.Collections;

public class DetonateIt : MonoBehaviour
{
    // Данное поле будет содержать экземпляр объекта-взрыва
    // который мы будем посдтавлять на место клика мышкой
    public GameObject explosion;


    // Кроме функции  Update нам ничего не понадобится, так что
    // оставим только ее
    public void Update()
    {
        // По нажатию кнопки R будем восстанавливать сцену, для новых взрывов
        if (Input.GetKeyDown(KeyCode.R))
        {
            // у нас всего одна сцена, имеющая индекс "0"
            Application.LoadLevel(0);
        }

        // Щелкаем мышкой
        if (Input.GetMouseButtonDown(0))
        {
            // Используя свойство camera данного компонента мы получим камеру, 
            // привязанную к объекту
            // С помощью камеры спроецируем луч из точки на экране, в которой находится мышька
            Ray mouseRay = camera.ScreenPointToRay(Input.mousePosition);
            
            // переменная, которая будет содержать результат щелчка мышью по сцене
            RaycastHit hit;

            // на основе полученного луча проверяем его пересечение с объектами в сцене, 
            // содержащими компонент Collider (кубики содержат по умолчанию Box Collider)
            if (Physics.Raycast(mouseRay, out hit))
            {
                // если попали в геометрию, то создадим в этом месте взрыв
                Instantiate(explosion, hit.point, Quaternion.identity);
            }
        }
    }
}
6. Возвращаемся в Unity и назначаем созданный компонент камере.



7. Как видно из скриншота, у компонента есть поле Explosion, на которое мы должны перетащить один их подготовленных префабов взрывов, которые я показывал выше.



8. Назначаем любой взрыв, запускаем и наслаждаемся )).

Результат можно посмотреть по этой ссылке.


ps: если вы хотите построить проект, то вам сначала нужно сохранить текущую сцену, потом при выборе File->Build Settings... добавить ее в список построения под индексом 0 и нажать кнопку Build? выбрав нужную платформу.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 19 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
Aikon (12.12.2011), Amatsu (13.12.2011), Arles (17.08.2013), Arton (11.07.2010), baton4ik (05.08.2010), den (20.07.2010), Dream (17.06.2010), Duskly (11.12.2011), Fatalix3d (24.06.2010), FireOwl (17.06.2010), Hurrit (21.06.2010), is.SarCasm (11.07.2010), LLI.T.A.L.K.E.R. (27.11.2014), Nex (27.06.2010), Nuprahtor (11.12.2011), Reks888 (20.06.2010), SBJoker (17.06.2010), St_AnGer (16.08.2010), Zer0n (07.07.2010)