- Home /
Particle Not Instantiating
Hey, I was wondering if someone could help me on this script I've been working on, the problem i have encountered is that the particle that I have attached wont instantiate. If someone could help me, then that would be much appreciated!
//Variables Start___________________________________
//The explosion effect is attached to this
//in the inspector
public GameObject mudParticle;
//A quick reference.
private Transform myTransform;
//The projectiles flight speed.
private float projectileSpeed = 200;
//Prevent the projectile from causing
//further harm once it has hit something.
private bool expended = false;
//A ray projected in front of the projectile
//to see if it will hit a recognisable collider.
private RaycastHit hit;
//The range of that ray.
private float range = 1.5f;
//The life span of the projectile.
private float expireTime = 10;
//Variables End_____________________________________
// Use this for initialization
void Start ()
{
myTransform = transform;
//As soon as the projectile is created start a countdown
//to destroy it.
StartCoroutine(DestroyMyselfAfterSomeTime());
}
// Update is called once per frame
void Update ()
{
//Translate the projectile in the up direction (the pointed
//end of the projectile).
myTransform.Translate(Vector3.left * projectileSpeed * Time.deltaTime);
//If the ray hits something then execute this code.
if(Physics.Raycast(myTransform.position,myTransform.forward, out hit, range) &&
expended == false)
{
//If the collider has the tag of Floor then..
if(hit.transform.tag == "floorMud")
{
expended = true;
//Instantiate an explosion effect.
Instantiate(mudParticle, hit.point, Quaternion.identity);
//Make the projectile become invisible.
myTransform.renderer.enabled = false;
//Turn off the light. The halo will also disappear.
myTransform.light.enabled = false;
}
}
}
IEnumerator DestroyMyselfAfterSomeTime()
{
//Wait for the timer to count up to the expireTime
//and then destroy the projectile.
yield return new WaitForSeconds(expireTime);
Destroy(myTransform.gameObject);
}
}
Have you confirmed that Instantiate() is being called, at least? If you put Debug.Log() message right next to it, does it appear in your log? Do you see a new GameObject being made?
Oh okay now I see...the ray actually flys sideways. So its not really straight hitting the floor, but its actually flying at 90 degrees...any idea how I can change the ray to being in front of the bullet? I tried hitting an object now and it worked the particle was instantiated.
Answer by raimon.massanet · May 15, 2013 at 01:47 PM
Try this:
void Start()
{
myTransform = transform;
//As soon as the projectile is created start a countdown
//to destroy it.
Destroy (gameObject, expireTime);
}
Thanks for your reply, although im sorry to say that this does not solve my problem :(
Your answer
Follow this Question
Related Questions
Optimized Coin Party using Particle System.. 0 Answers
Unitys Particle System wont work like i want 0 Answers
How do I add a force on the final shot with a gun? 0 Answers
How to shoot particle bullets!!! 3 Answers
Detection bullets hit 2 Answers