- Home /
Damage over time on delay
I have this js set to make my charter take damage over time as long as its in my invisable collide but its doing 1 damage every second and I need to put it on a delay. I want it to do 5 damage every 3 seconds you are in it.
var damage: float = 15.0;
var playerStatus : Player_Status;
function OnTriggerEnter()
{
playerStatus = GameObject.FindWithTag("Player").GetComponent(Player_Status);
}
function Update()
{
if(playerStatus != null)
playerStatus.ApplyDamage(damage);
}
function OnTriggerExit()
{
playerStatus = null;
}
Answer by FLASHDENMARK · Apr 03, 2012 at 03:41 PM
var damage: float = 15.0;
var playerStatus : Player_Status;
var damageDelay = 3.0;
private var lastDamage = -10.0; //Don't touch!!
function OnTriggerEnter()
{
playerStatus = GameObject.FindWithTag("Player").GetComponent(Player_Status);
}
function Update()
{
if(playerStatus != null){
if(Time.time > damageDelay+lastDamage){
playerStatus.ApplyDamage(damage);
lastDamage = Time.time;
}
}
}
function OnTriggerExit()
{
playerStatus = null;
}
There you go, use a simple timer.
its still just doing the damage every second non stop till he is dead
Well, that makes sense. I forgot something, fixed now.
Answer by GutoThomas · Apr 03, 2012 at 03:59 PM
Maybe making a function doDamage and calling WaitForSeconds? As you want 5 of damage every 3 seconds you can do:
if(playerStatus != null) {
doDamage();
}
function doDamage() {
yield WaitForSeconds(damageDelay);
playerStatus.ApplyDamage(damage/3):
}
When it reachs a certain amont of damage you can turn like a bool to false to lock the doDamage function.
Your answer
Follow this Question
Related Questions
Temporary invulnerability in a platformer 1 Answer
Trigger and ennemy damage 2 Answers
Why OnTriggerStay applies this action on all colliders 2 Answers
Gameobject not registering collisions 1 Answer
Damage trigger? 1 Answer