- Home /
Damage receiver help!
I need my gun bullets to send damage. Heres my damage receiver script
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
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)
That script its fine! Now this is my shooting script
var prefabBullet:Transform; var shootForce:float;
function Update() { if(Input.GetButtonDown("Fire1")) { var instanceBullet = Instantiate(prefabBullet, transform.position, Quaternion.identity); instanceBullet.rigidbody.AddForce(transform.forward * shootForce); } }
Now what can i add to my shooting script so it sends damage?
Answer by Heratitan · Jun 20, 2011 at 08:05 PM
If you add this script to your bullet, and both the bullet and the target have colliders, then the bullet will apply the damage:
var damage : float;
function OnCollisionEnter (other : Collision){
// Tell the object you hit that it was damaged
other.collider.gameObject.SendMessage("ApplyDamage", damage, SendMessageOptions.DontRequireReceiver);
}
I hope that helps!
Your answer
Follow this Question
Related Questions
Raycast shooting 1 Answer
damage system 0 Answers
Using raycast gun to take down life of enemy when shot 1 Answer
Why is my gun shooting backward? 2 Answers
Help with fire script 1 Answer