- Home /
Help With Initiating Bomb Every Specific Second
Hello,
I'm working on a Jet, and what it does is it finds a target with a tag of 'enemy', it then flys over the enemy and drops a bomb, and then flys away.
What I want though, is for the jet to drop a bomb every second whilst its above the enemy. This should be call in a function called 'Bomb()'
If you could help, that would be great!
Here is my script:
// --- Control Fighter Jets Flight AI --- \\
 
               // - Jet Flight - \\ var targetTag : String; var target : Transform; private var speed : float = 30; var damping = 2; var distance : int; var distanceExit : int; var exit : Transform; var follow : boolean = true; var dropBombs : boolean = false; var bomb : Rigidbody; var bombSpawn : Transform;
 // - DamageControl - \\ var explosion : GameObject; var damage = 80; var deadReplacement : Rigidbody;
 function OnCollisionEnter(collision : Collision) { Detonate (); 
}
 function Update () { var tar = GameObject.FindWithTag(targetTag); if(tar) target = tar.transform; }
 function LateUpdate(){ // --- Finds target, and follows it --- \\ if(follow == true) { var lookAt = target.position - transform.position; lookAt.y = 0; var rotation = Quaternion.LookRotation(lookAt); transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime  damping); transform.Translate(Vector3.forward*speed*Time.deltaTime); // --- Once jet is within a distance of enemy, it will stop following --- \\ var distance = transform.position.x - target.position.x; if(distance < 5){ follow = false; } // --- Activate bomb dropping within a ditance --- \\ if(distance < 10){ Bomb(); } } // --- Fly to exit waypoint --- \\ if(follow == false){ var lookAtExit = exit.position - transform.position; var rotationExit = Quaternion.LookRotation(lookAtExit); transform.rotation = Quaternion.Slerp(transform.rotation, rotationExit, Time.deltaTime  damping); transform.Translate(Vector3.forward*speed*Time.deltaTime);
  }
 // --- Destory jet when at exit waypoint --- \\
 var distanceExit = transform.position.x - exit.position.x;
 if(distanceExit < 5){
     Destroy(gameObject);
 }
 } // --- Destory jet when collider is true --- \\ function Detonate () {
  Destroy(gameObject);
 if (explosion)
     Instantiate (explosion, transform.position, transform.rotation);
 if (deadReplacement) {
     var dead : Rigidbody = Instantiate(deadReplacement, transform.position, transform.rotation);
     dead.rigidbody.velocity = rigidbody.velocity;
     dead.angularVelocity = rigidbody.angularVelocity;
 }
 var emitter : ParticleEmitter = GetComponentInChildren(ParticleEmitter);
 if (emitter) {
     emitter.emit = false;
     emitter.transform.parent = null;
 }
 }
 // ---- Experimental Bomb ---- \\ private var nextFireTime = 0.0; private var m_LastFrameShot = -1; private var fireRate = 0.2;
 function Bomb(){ if (Time.time - fireRate > nextFireTime) nextFireTime = Time.time - Time.deltaTime;
  while( nextFireTime < Time.time) {
 BombOneShot();
 nextFireTime += fireRate;
 }
 }
 function BombOneShot(){ Instantiate (bomb, bombSpawn.position, transform.rotation); dropBombs = false;
  m_LastFrameShot = Time.frameCount;
 } 
Thanks All!
Answer by oliver-jones · Dec 11, 2010 at 08:17 PM
Right, well that was a lot more easier than I thought.
just needed a InvokeRepeating("Bomb", 0, 1);
Your answer
 
 
             Follow this Question
Related Questions
Making a timer using WaitForSecondsRealtime without keyword 'new'? 1 Answer
Better way for a timer to load a level? 1 Answer
I want to have cancelinvoke start multiple seconds arfter object becomes invisible 1 Answer
How to add a delay to a bomb explostion 1 Answer
Loop a function, once per second, X number of times 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                