-знание интерфейса программы;
-хоть какое-то знание JavaScript.
В этом уроке:
-скрипт для запуска гранаты;
-скрипт для взрыва гранаты;
-реалистичный визуальный взрыв;
-отталкивание объектов взрывной волной.
Часть 01
1) Для начала создадим новую сцену и наполним её только необходимым содержимым:
http://www.picamatic.com/show/2012/10/2 ... 19x949.PNG
2) Далее создаем три скрипта JavaScript: Launcher, Grenade и Explosion.
3) В скрипт Launcher пишем:
Синтаксис:
Используется javascript
var projectile : Rigidbody;
var speed = 20;
function Update()
{
if( Input.GetKeyDown( KeyCode.Mouse0 ) )
{
var instantiatedProjectile : Rigidbody = Instantiate( projectile, transform.position, transform.rotation );
instantiatedProjectile.velocity = transform.TransformDirection( Vector3( 0, 0, speed ) );
Physics.IgnoreCollision( instantiatedProjectile. collider, transform.root.collider );
}
}
var speed = 20;
function Update()
{
if( Input.GetKeyDown( KeyCode.Mouse0 ) )
{
var instantiatedProjectile : Rigidbody = Instantiate( projectile, transform.position, transform.rotation );
instantiatedProjectile.velocity = transform.TransformDirection( Vector3( 0, 0, speed ) );
Physics.IgnoreCollision( instantiatedProjectile. collider, transform.root.collider );
}
}
4) Создайте маленькую сферу и немного вытянем её (не забудьте сменить Sphere Collider на Capsule Collider и добавить компонент Rigidbody массой 0.5):
http://www.picamatic.com/show/2012/10/2 ... 19x951.PNG
5) Создайте префаб Grenade и перетащите на него нашу сферу из окна Hierarhy. Из сцены сферу можно удалить.
6) Далее перетащите скрипт Launcher на Main Camera вашего игрока. На поле Projectile перетащите префаб Grenade:
Теперь вы можете запускать сферы, нажимая правую кнопку мыши. Не хватает взрыва.
Часть 2
1) В скрипт Grenade пишем:
Синтаксис:
Используется javascript
var explosion : GameObject;
var timer = 3;
function Start()
{
yield WaitForSeconds(timer);
var instantiatedExplosion : GameObject = Instantiate(explosion, transform.position, transform.rotation);
Destroy( gameObject );
}
var timer = 3;
function Start()
{
yield WaitForSeconds(timer);
var instantiatedExplosion : GameObject = Instantiate(explosion, transform.position, transform.rotation);
Destroy( gameObject );
}
2) Создайте новый префаб Explosion.
3) Создайте новую Particle System с названием Smoke.
4) Все настройки поставьте примерно такими:
5) Создайте Point Light с названием Light и поставьте следующие настройки (цвет можете изменить):
6) Создайте Empty Object с именем Explosion и поместите в него ваши Smoke и Light (не забудьте изменить у них координаты на 0 0 0).
7) Создайте префаб Explosion и перетащите на него ваш объект Explosion (объект можно удалить со сцены).
8) Перетащите скрипт Grenade на префаб Grenade.
9) Выберите префаб и в значение Explosion перетащите ваш префаб Explosion.
10) Скрипт Explosion:
Синтаксис:
Используется javascript
var smoke : ParticleEmitter;
var fireLight : Light;
var smokeTime = 1;
var expRadius = 15.0;
var expPower = 1200.0;
function Start(){
var colliders : Collider[] = Physics.OverlapSphere( transform.position, expRadius );
for( var hit in colliders )
{
if( hit.rigidbody )
{
hit.rigidbody.AddExplosionForce(expPower, transform.position, expRadius);
}
}
StopSmoke();
StopFire();
Destroy(gameObject, 2);
}
function StopSmoke(){
yield WaitForSeconds(smokeTime);
smoke.emit = false;
}
function StopFire(){
yield WaitForSeconds(0.1);
fireLight.enabled = false;
}
var fireLight : Light;
var smokeTime = 1;
var expRadius = 15.0;
var expPower = 1200.0;
function Start(){
var colliders : Collider[] = Physics.OverlapSphere( transform.position, expRadius );
for( var hit in colliders )
{
if( hit.rigidbody )
{
hit.rigidbody.AddExplosionForce(expPower, transform.position, expRadius);
}
}
StopSmoke();
StopFire();
Destroy(gameObject, 2);
}
function StopSmoke(){
yield WaitForSeconds(smokeTime);
smoke.emit = false;
}
function StopFire(){
yield WaitForSeconds(0.1);
fireLight.enabled = false;
}
11) Повесьте скрипт на префаб Explosion. Выберите префаб, в поле Smoke поставьте объект Smoke из префаба. Light - аналогично.
Пример демонстрации: создайте 20-30 кубов с компонентом Rigidbody, соберите из них большой куб (поставив их друг на друга). Теперь запустите игру и киньте в эту постройку гранату.
Можете заменить сферу на модель гранаты.
AM-Games