5 Удаление патронов, создание искр

using UnityEngine;
using System.Collections;

public class Bullet : MonoBehaviour {
	
	public Transform Sparks;	//переменная для префаба искр
	private float LifeTime = 10;//переменная времени жизни пули
	private float RespawnTime = 0;//переменная нужная для таймаута
	void OnCollisionEnter(Collision collision)//если объект с этим скриптом сталкивается с коллизией
	{
		Dead();//вызываем функцию dead
		foreach (ContactPoint contact in collision.contacts)//в точке столкновения
		{
			Instantiate(Sparks, transform.position, Quaternion.identity);//создаём префаб искр
		}
	}
	
	// Update is called once per frame
	void Update () 
	{
	 RespawnTime += Time.deltaTime; //RespawnTime увеличивается с каждым кадром после создания объекта
		if(RespawnTime>LifeTime) // если RespawnTime больше LifeTime
		{
		Dead();//вызываем функцию dead
		}
	}
	void Dead() // функция dead
	{
		Destroy(gameObject); //удаляем объект на котором висит скрипт
	}
}

Sparks:

using UnityEngine;
using System.Collections;

public class Sparks : MonoBehaviour {
	
	private float LifeTime = 0.3f; //переменная времени жизни пули
	private float RespawnTime = 0; //Переменная нужная для таймаута
	// Update is called once per frame
	void Update () 
	{
		RespawnTime += Time.deltaTime; //RespawnTime увеличивается с каждым кадром после создания объекта
		if(RespawnTime>LifeTime)// если RespawnTime больше LifeTime
		{
			Destroy(gameObject);//удаляем объект на котором висит скрипт
		}
	}
}

Комментарии к этому посту

  • Сергей
    19.01.2014 at 21:50

    Добрый день, подскажите пожалуйста. Мне очень нравятся ваши уроки, очень многое понял уже в юнити и в c#, но в данном уроке удаления патронов со сцены столкнулся с проблемой. Пули не исчезают при столкновении с террейном, а также с предметами с коллизией, но исчезают спустя указанное время LifeTime. Так же из-за того, что скрипт не понимает столкновения с коллизией, не работает скрипт Sparks. Подозреваю, что проблемы где-то в этой строчке «void OnCollisionEnter(Collision collision)», точно ли всё именно так, как нужно? Заранее благодарю.


  • Глеб
    20.05.2014 at 20:28

    А зачем юзать все эти грамоздкие образования типа счётчика времени
    RespawnTime += Time.deltaTime;
    if(RespawnTime>LifeTime)
    {
    Destroy(gameObject);
    }
    Когда можно было в старт прописать Destroy (gameObject, _lifeTime), где _lifeTime- время жизни?



Оставить комментарий