- Home /
How can I destroy an enemy with two shots
Hi, my enemy script is on c#, and my bullet script is in javascript right now i did this code to whenever i shoot an enemy, the timer should start and wait two seconds, if in that two seconds i shoot the enemy, he would be destroyed, but it never happens because the timer never starts. Here is my bullet script :
#pragma strict
var BulletSpeed = 5;
var enemy : GameObject;
var time : float;
function Start () {
}
function Update () {
transform.Translate(Vector2.up * BulletSpeed);
Destroy(this.gameObject, 2);
}
function OnCollisionEnter2D(coll: Collision2D) {
if (coll.gameObject.tag == "Enemy"){
time += Time.deltaTime;
}
if(time <= 2 && coll.gameObject.tag == "Enemy"){
Destroy(coll.gameObject);
time = 0;
}
}
Answer by robertbu · Aug 18, 2014 at 04:50 PM
You have some concepts wrong here, and some code wrong here. First, unless you only have one projectile and are reusing that projectile, this code won't work on the projectile (i.e. you are destroying the projectile so the script ands its values disappear). The better way to structure it would be to place the script on the enemy. Second, this:
time += Time.deltaTime;
...needs to be executed each frame. Right now you are only incremented at the start of a collision. Here is some alternate code that goes on each enemy.
#pragma strict
var timer : float = 0.0;
function Update () {
timer += Time.deltaTime;
}
function OnCollisionEnter2D(coll: Collision2D) {
if (coll.gameObject.tag == "Bullet") {
if (timer < 2.0) {
Destroy(gameObject);
}
else {
timer = 0.0;
}
}
}
Note the code checks for the tag 'Bullet'. Change this to whatever tag you have on your bullets. It works by increasing the timer every frame, but a bullet strike resets the timer. If a second bullet hits, then the enemy is destroyed.
Your answer
Follow this Question
Related Questions
Problem with rendering component 1 Answer
How to detect correct collision from multiple game objects? Separate collisions 0 Answers
raycasts only working with IsTrigger colliders? 1 Answer
Issue Firing lazer(bullet) in space game. c# 1 Answer
A script that auto generated the box collider around a 3d model 3 Answers