Hi!
I’m working on a damage script for the player, but I’m having a problem. Now when you walk on a specific trigger your player loses health and that works like it should. But what I want to implement is that when you stay in the trigger box you should lose health every second or two.
I’ve tried OnTriggerStay, but it wont work like I want it to. I think it calls it every frame, so the player loses all his health in like 1 second.
Here’s my script:
var damage = 10;
var healthScript : Health;
var damageSound: AudioClip;
//Disable objects
var pauseScript : Pause;
var deathScreen : boolean;
var deathSound: AudioClip;
var PlayerObjects : GameObject;
var flashlightObjects : GameObject;
var cameraObjects : GameObject;
var interactionObjects : GameObject;
function OnTriggerEnter ()
{
healthScript.healthPoints -= damage;
AudioSource.PlayClipAtPoint(damageSound, transform.position);
//Death
if (healthScript.healthPoints <= 0)
{
AudioSource.PlayClipAtPoint(deathSound, transform.position);
healthScript.healthPoints = 0;
deathScreen = true;
Time.timeScale = 0;
AudioListener.pause = true;
Screen.showCursor = true;
Screen.lockCursor = false;
//Disable components
PlayerObjects.GetComponent(CharacterMotor).enabled = false;
PlayerObjects.GetComponent(SmoothMouseLook).enabled = false;
cameraObjects.GetComponent(SmoothMouseLook).enabled = false;
PlayerObjects.GetComponent(Footsteps).enabled = false;
PlayerObjects.GetComponent(Crosshair).enabled = false;
flashlightObjects.GetComponent(Flashlight2).enabled = false;
PlayerObjects.GetComponent(KeyInventory).enabled = false;
PlayerObjects.GetComponent(BatteryInventory).enabled = false;
PlayerObjects.GetComponent(HealthInventory).enabled = false;
pauseScript.enabled = false;
interactionObjects.SetActive(false);
Destroy(gameObject);
}
}
function OnTriggerStay ()
{
healthScript.healthPoints -= damage;
if (healthScript.healthPoints <= 0)
{
AudioSource.PlayClipAtPoint(deathSound, transform.position);
healthScript.healthPoints = 0;
deathScreen = true;
Time.timeScale = 0;
AudioListener.pause = true;
Screen.showCursor = true;
Screen.lockCursor = false;
//Disable components
PlayerObjects.GetComponent(CharacterMotor).enabled = false;
PlayerObjects.GetComponent(SmoothMouseLook).enabled = false;
cameraObjects.GetComponent(SmoothMouseLook).enabled = false;
PlayerObjects.GetComponent(Footsteps).enabled = false;
PlayerObjects.GetComponent(Crosshair).enabled = false;
flashlightObjects.GetComponent(Flashlight2).enabled = false;
PlayerObjects.GetComponent(KeyInventory).enabled = false;
PlayerObjects.GetComponent(BatteryInventory).enabled = false;
PlayerObjects.GetComponent(HealthInventory).enabled = false;
pauseScript.enabled = false;
interactionObjects.SetActive(false);
Destroy(gameObject);
}
}
Does anyone know how to fix this?