kyle hadley
kyle hadley

Reputation: 57

unity destroy enemy destroying wrong one confused

i have tried everything to get the destroy to work Destroy(enemytrans) Destroy(enemy) Destroy(enemy.gameObject..... ect all abbreviations wont work. can someone please help ???

i can coll with all objects and they do destroy but if 2 enemies are on screen i hit the one closest to me the other one will die because it was last spawned how can i destroy the one i jump on ?? mind efukd. :(

var Player : GameObject;
var Gravity:float = 2;
var speed:float = 2;
var enemytrans : Transform;
var enemy: GameObject;
public var jumped = false;
var anim : Animator;

function Start () {
     while (true) {
         yield WaitForSeconds (Random.Range(3, 0));
         enemy = Instantiate(enemytrans).gameObject;
     }
anim = GetComponent(Animator);
 // Instantiate the prefab and put the gameObject into "theCube"
}

function Update () {


Player.transform.position.x = -4.325;
//the gravity function

if (jumped == false){
anim.SetFloat("hf",0.0);
}
if (Input.GetButtonDown("Fire1") && jumped==false){
fire();
jumped = true;
}
if(jumped==true){
anim.SetFloat("hf",1);
}
}


function OnCollisionEnter2D(coll: Collision2D) {
if(coll.gameObject.CompareTag("ground")){
anim.SetFloat("hf",0.0);
jumped=false;
}
if(coll.gameObject.CompareTag("enemy") && jumped==true){
fire(); 
jumped=true;
Destroy(enemy,1);***********************************************this line************
}
if(coll.gameObject.CompareTag("enemy") && jumped==false){
Destroy(Player);
}
}


function fire(){
Player.transform.Translate(Vector3(Input.GetAxis("Vertical") * speed * Time.deltaTime, 0, 0));
Player.rigidbody2D.velocity = Vector2(0,10);
}

Upvotes: 1

Views: 399

Answers (1)

axwcode
axwcode

Reputation: 7824

Problem

You are destroying the last spawned GameObject, which you keep a reference to in the enemy variable.


Solution

You should destroy what you hit. Unity3D already gives you who you collided against so just use that information.

function OnCollisionEnter2D(coll: Collision2D) 
{
    if(coll.gameObject.CompareTag("enemy") && jumped==true)
       Destroy(coll.gameObject);
}

Upvotes: 1

Related Questions