- Home /
I die instantely
I know this is probably a Stupid question BUT I was wondering why my script is working this way. this is my script for enemy shooting
var LookAtTarget : Transform; var damp : float = 6.0; var nextShotTime : float = 0.0; var timeBetweenShots : float = 2.0; var damage = 50;
function Update() { if(LookAtTarget) { var rotate = Quaternion.LookRotation(LookAtTarget.position - transform.position); transform.rotation = Quaternion.Slerp(transform.rotation, rotate, Time.deltaTime * damp);
if (nextShotTime <= Time.time)
{
Shoot();
nextShotTime = Time.time + timeBetweenShots;
}
}
}
function Shoot() { var hit : RaycastHit; var fwd = transform.TransformDirection (Vector3.forward); if (Physics.Raycast (transform.position,transform.forward,hit, 500)) { script = hit.collider.GetComponent("playerhealth"); script.curHealth = -damage;
}
}
When I start playing it works to an extent but when I do get hit I die instantly, no delay or health loss, just instant. Also the other script is C#. I am not sure on the the limits of contacting other languages.
this is my health script:
using UnityEngine; using System.Collections;
public class playerhealth : MonoBehaviour { public int maxHealth = 100; public int curHealth = 100;
public float healthBarLength;
// Use this for initialization
void Start () {
healthBarLength = Screen.width / 2;
}
// Update is called once per frame
void Update () {
adjustcurHealth(0);
}
void OnGUI() {
GUI.Box(new Rect(10, 10, healthBarLength, 20), curHealth + "/" + maxHealth);
}
public void adjustcurHealth(int adj) {
curHealth += adj;
if(curHealth < 0)
curHealth = 0;
if(curHealth > maxHealth)
curHealth = maxHealth;
if(maxHealth < 1)
maxHealth = 1;
if(curHealth <= 0)
{
Destroy(gameObject);
healthBarLength = (Screen.width / 2) * (curHealth / (float)maxHealth);
}
}
}
Answer by PaulBrasfield · Jul 24, 2011 at 10:29 PM
if(maxHealth < 1)
maxHealth = 1;
if(curHealth <= 0)
I believe the problem is that you have an unfinished part of your script here. after you put if(curHealth <= 0)
you have to put what happens if that statement is true. for instance:
if(curHealth <= 0)
curHealth = 0;
Your answer
Follow this Question
Related Questions
How to damage player when bullet collides with player. 0 Answers
Hey can anyone help with a shooting script??? 0 Answers
How to stop enemies from shooting each other 1 Answer
Enemies sharing health 2 Answers
Player Health Damage 2 Answers