On-Click shoot missile and explode where clicked....

How can I setup a On-click shoot missile and explode where you clicked?

I know how to do most of it but I'm wondering how to make it explode when it reaches where you click not when it collides with other things.

My Code:

if (GUI.Button (Rect (0,0,100,100), "SHOOT")) {
var instantiatedProjectile : Rigidbody = Instantiate (projectile, 
 transform.position, transform.rotation); 

// Give it an initial forward velocity. The direction is along the z-axis of 
// the missile launcher's transform. 
instantiatedProjectile.velocity = transform.TransformDirection( 
 Vector3 (0, 0, initialSpeed)); 
// Ignore collisions between the missile and the character controller 
Physics.IgnoreCollision(instantiatedProjectile.collider, transform.root.collider);
}

Thanks.

How you're firing and moving the missile is going to determine how you cause it to explode.

If you only want it to explode when it hits where you clicked, you wouldn't bother with collision at all. You'd just set up your script with a target point (so you have somewhere in 3D where you "clicked" that you want your missile to go to), and you just set up your movement/explosion script such that when the target is at or behind where your missile is (assuming you're going straight towards it), you blow up your missile.

Well if your are trying use a GUI button thing and when you click the button you are able to shoot missles will be a little more complicated. But you can just use a button. Plus the game will look more realistic if it explodes when ever it hits something. So here is my script on how it works.

// This variable is the missle which requires a rigidbody to be attached to it so it can move around.
var missle = Rigidbody;

//What makes the update your should know this but to be on the safe side.
function Update ()
{
    // the if statement is to see if you clicked the button(key), the m stands for missle in the if statement
    if ( Input.GetKeyDown ("m") )
    {
        //this is var shooting the missle from where you want the missle to come from. So create a gameObject and call is MissleSpawn and place it under the player so it can be fallowed, and if its mutliplayer the transform part will only search for it if you shoot it and no one elses. 
        var missle = Instantiate(missle, transform.Find("MissleSpawn").transform.position, Quaternion.identity);

        //This is so it can move. If you dont add this it will just fall in the place, and kill your
        Rigidbody.AddForce(forward * 600);
        Now it will stay the same forward speed until it collides with something. 
    }
}

If there is any errors let me know and i can fix them so that way it will work. But if you want it to be in a Gui a way then you need two scripts because one for Gui and the other for the missle luanching, ok here is the Gui one. With how it works.

//Searchs for a gameObject with the missleSpawn on it to call for it

private var MissleSpawn : missleSpawn;

    //using the private var
    function Start ()
    {
        MissleSpawn = GetComponent(missleSpawn);
    }

    //calls for the GUI 
    function OnGUI ()
    {
        //makes the GUI button for you at the top left part of your screen
        if ( GUI.Button ( Rect (0,0,130,30), "Missle) )
        {
            //activates the missleSpawn script
            if ( missleSpawn )
            {
                missleSpawn.enabled = true;
            }
            // or if button is not pressed
            else
            {
                missleSpawn.enabled = false;
            }
        }
}

If it does not work let met me know and i will fix it. Now here is the missleSpawn script. Make sure its component check box is not checked.

//the missle
var missle = Rigidbody;

function Update ()
{
    // i know this will be placed on the MissleSpawn object but it still works if not let me know and i will see what i can do.
    var missle = Instantiate(missle, transform.Find("MissleSpawn").transform.position, Quaternion.identity);

    //adds the force
    Rigidbody.AddForce(forward * 600);
}

There now you have it. If you like this answer and you think its the best one you got rate it up if not rate it down then. I will be checking this every now and then see if you like this answer. Good bye