Getting a proximity mine to instantiate explosion to kill enemies

Hey guys,

So I’m working on what is essentially an AC-130 game and I’m trying to drop proximity mines onto the field that explode when the enemies are nearby. This is what I’ve got so far:

var proxMine : GameObject;

var targetObject: GameObject;

var shots : int = 0;

var maxShots : int = 2;

var proximity : float = 3;

var explosion: GameObject;

var explosionRadiusTest: GameObject;

function FixedUpdate()

{

if(Input.GetKeyDown("space") && shots < maxShots)

{

	Instantiate( proxMine, Vector3( transform.position.x, transform.position.y, transform.position.z ), Quaternion.identity );

	shots++;

}

else if (shots >= maxShots && Input.GetKeyDown(KeyCode.R))

{

    shots = 0;

}

var dist = Vector3.Distance(targetObject.transform.position, transform.position);

if (dist < proximity)

{

	Instantiate (explosion, Vector3(proxMine.transform.position.x, proxMine.transform.position.y, proxMine.transform.position.z), Quaternion.identity);

	Instantiate (explosionRadiusTest, Vector3(proxMine.transform.position.x, proxMine.transform.position.y, proxMine.transform.position.z), Quaternion.identity);

	Destroy(proxMine);

	//Destroy(targetObject);

}

}

function getShots()

{

return shots;

}

God I hope that formatted correctly. Anyway, any help you guys could give would be grea. Thanks!

I’d be tempted to use a trigger to activate a proximity mine, as having each mine check the distance to each enemy in the FixedUpdate loop sounds quite expensive.

Try adding a spherical collider of the desired radius to your mine prefab, with the Is Trigger box checked, and attach the following script

var explosion : GameObject;

function OnTriggerEnter(other : Collider){

    if (other.gameObject.tag == "Enemy") {

	Instantiate (explosion, this.transform.position, Quaternion.identity);

	Destroy (other.gameObject);
	//Destroy the enemy that comes into contact with the mine's activation area	

	Destroy (this.gameObject);
	//Destroy the mine

    }

}

If you don’t have a uniform tag for all your enemies, you could do away with that line and set up the layer collision matrix so your mine ignores the player and any terrain it might be in contact with, much easier by tag though.

You might want to put the rest of your code in the Update loop too, as FixedUpdate is a little sluggish for input commands (I think).

Hope that helps!