Question by
TheUltimatePVP · May 20, 2016 at 03:51 AM ·
javascriptraycastprogramming
Health Will Not Deplete as I shoot Enemy.
I do not know what is wrong. No console errors. Just everytime I shoot my enemy with raycast the health will not go down. Here is my code: using UnityEngine; using System.Collections;
public class health : MonoBehaviour {
public int DamageAmount=5;
public float TargetDistance;
public float AllowedRange=15;
public RaycastHit Shot;
public int maxhealth=50;
public int currenthealth;
//cant die
public bool invincible;
public bool dead;
//check if ou want to enable health regeneration
public bool regenerate;
//time between each generate
public float regenerationtime=0.8f;
//the timer
private float regtimer;
//amount of hp to regenerate per generate
public int regenerationamount=2;
private int healthsave;
public bool givereward;
private bool rewardgiven;
public int xptogive=10;
public int goldtogive=10;
// Use this for initialization
void Start () {
givereward=false;
AI ai=(AI)GetComponent("AI");
if(ai) ai.health=maxhealth;
currenthealth=maxhealth;
healthsave=maxhealth;
}
// Update is called once per frame
void Update () {
if (Physics.Raycast (transform.position, transform.TransformDirection (Vector3.forward), out Shot)) {
TargetDistance = Shot.distance;
if (TargetDistance < AllowedRange) {
Shot.transform.SendMessage ("LoseHealth", 10);
}
}
//tell ai when health is changed
if(healthsave>currenthealth|healthsave<currenthealth){
AI ai=(AI)GetComponent("AI");
if(ai){
ai.health=currenthealth;
healthsave=currenthealth;
}
}
//death
if(dead){
AI ai=(AI)GetComponent("AI");
//tell ai that he is dead
if(ai)ai.dead=true;
}
else givereward=true;
if(currenthealth>=maxhealth) currenthealth=maxhealth;
//if health is less than zero
if(currenthealth<=0){
//check if invincible if not death
if(invincible)dead=false;
else dead=true;
currenthealth=0;
}
//regenerate
if(regenerate){
if(currenthealth<maxhealth¤thealth>0){
regtimer+=Time.deltaTime;
if(regtimer>regenerationtime){
currenthealth=currenthealth+regenerationamount;
regtimer=0;
}
}
}
}
}
Comment
Your answer
Follow this Question
Related Questions
LayerMask Not working when raycasting to Specific layer. 0 Answers
Raycast variable type in C#? 1 Answer
How to stop model form rotating back to face down? 1 Answer
Spawn a dot for every number typed? 0 Answers
ScreenPointToRay 0 Answers