- Home /
damage game object
function Update () {
gameObject.ApplyDamage(10000);
}
hey guys i know the applydamage isnt working with gameobjects but i dont know of an other option i wanted to make a granade. i added a damage reciever to the granade with the explosion and stuff but i have set the hit points on the reciever to 0 and the dettenation delay to 7secs but when i trow the granade it will not explode afther 7 secs so i would like to do this to damage it directly and it hase still 7secs left and boom
this is the damage script from the first person shooter tutorial
var hitPoints = 100.0; var detonationDelay = 0.0; var explosion : Transform; var deadReplacement : Rigidbody;
function ApplyDamage (damage : float) { // We already have less than 0 hitpoints, maybe we got killed already? if (hitPoints <= 0.0) return;
hitPoints -= damage;
if (hitPoints <= 0.0) {
// Start emitting particles
var emitter : ParticleEmitter = GetComponentInChildren(ParticleEmitter);
if (emitter)
emitter.emit = true;
Invoke("DelayedDetonate", detonationDelay);
}
}
function DelayedDetonate () { BroadcastMessage ("Detonate"); }
function Detonate () { // Destroy ourselves Destroy(gameObject);
// Create the explosion
if (explosion)
Instantiate (explosion, transform.position, transform.rotation);
// If we have a dead barrel then replace ourselves with it!
if (deadReplacement) {
var dead : Rigidbody = Instantiate(deadReplacement, transform.position, transform.rotation);
// For better effect we assign the same velocity to the exploded barrel
dead.rigidbody.velocity = rigidbody.velocity;
dead.angularVelocity = rigidbody.angularVelocity;
}
// If there is a particle emitter stop emitting and detach so it doesnt get destroyed
// right away
var emitter : ParticleEmitter = GetComponentInChildren(ParticleEmitter);
if (emitter) {
emitter.emit = false;
emitter.transform.parent = null;
}
}
// We require the barrel to be a rigidbody, so that it can do nice physics @script RequireComponent (Rigidbody)
Answer by lhk · May 02, 2011 at 02:32 PM
You can't just call applyDamage to a gameObject. Instead you eather need to make a call like this
var script=gameObject.getComponent(ScriptThatImplementsApplyDamage);
script.applyDamage(10000);
or
gameObject.broadcastMessage("applyDamage",100000);
What is even more important:
Don't make this call in the Update method. Else the method will be called everytime the Object updates which is ~60 times per second.
Your answer
Follow this Question
Related Questions
Camera displays view on object 1 Answer
pragma strict issues with iOS 1 Answer
how to scale an object in order to fix the screen dimensions 3 Answers
game object hide 1 Answer
hide game object problems 2 Answers