In my script I have a bullet initiate whenever the enemy gets close, but I need to change the PlayerHealth variable so it can’t be a script on the bullet GameObject. Because of this I need to find a way to
- Access the bullet (which should be easy)
- check if it collides with the player
- and if it does take off 10 health
Here is my script:
#pragma strict
var Player : Transform;
public var MoveSpeed = 10;
public var MaxDist = 7;
public var MinDist = 5;
public var AttackDistance = 5;
public var PlayerHealth = 300;
public var EnemyHealth = 10;
var ani : Animator;
var AnimAttack : boolean;
var AnimDie : boolean;
var AnimShoot : boolean;
public var IsDead : boolean;
var bullet : GameObject;
var spawnPoint : Transform;
function Start ()
{
ani.enabled = false;
AnimAttack = false;
AnimDie = false;
IsDead = false;
AnimShoot = false;
}
function Update ()
{
if(IsDead) {
Die();
}
else {
if(gameObject.tag == "EnemyMelee") {
if(Vector3.Distance(transform.position,Player.position) <= MaxDist) {
transform.LookAt(Player);
transform.position += transform.forward*MoveSpeed*Time.deltaTime;
if(Vector3.Distance(transform.position,Player.position) <= AttackDistance)
{
if(Vector3.Distance(transform.position,Player.position) <= AttackDistance && Input.GetMouseButtonDown(0)) {
EnemyHealth = EnemyHealth - 1;
print(EnemyHealth + " = Enemy Health");
}
else {
AttackMelee();
}
}
if(EnemyHealth <= 0) {
IsDead = true;
}
if(PlayerHealth <= 0) {
Application.LoadLevel(1);
}
if (AnimAttack == true) {
ani.SetBool("AnimAttack", true);
ani.SetBool("AnimDie", false);
}
if (AnimDie == true) {
ani.SetBool("AnimAttack", false);
ani.SetBool("AnimDie", true);
}
}
else {
}
}
if(gameObject.tag == "EnemyRanged") {
if(IsDead) {
Die();
}
else {
if(Vector3.Distance(transform.position,Player.position) <= MaxDist) {
transform.LookAt(Player);
transform.position += transform.forward*MoveSpeed*Time.deltaTime;
if(Vector3.Distance(transform.position,Player.position) <= AttackDistance)
{
if(Vector3.Distance(transform.position,Player.position) <= AttackDistance && Input.GetMouseButtonDown(0)) {
EnemyHealth = EnemyHealth - 1;
print(EnemyHealth + "= Enemy Health");
}
else {
AttackRanged();
}
}
if(EnemyHealth <= 0) {
IsDead = true;
}
if (AnimShoot == true) {
ani.SetBool("AnimAttack", false);
ani.SetBool("AnimDie", false);
ani.SetBool("AnimShoot", true);
}
if (AnimDie == true) {
ani.SetBool("AnimAttack", false);
ani.SetBool("AnimShoot", false);
ani.SetBool("AnimDie", true);
}
}
else {
}
}
}
}
}
function Die() {
ani.enabled = true;
AnimAttack = false;
AnimDie = true;
yield WaitForSeconds (3);
Destroy (gameObject);
}
function AttackMelee() {
PlayerHealth = PlayerHealth - 0.000001;
print(PlayerHealth);
ani.enabled = true;
AnimAttack = true;
AnimDie = false;
}
function AttackRanged() {
ShootGun();
print(PlayerHealth);
ani.enabled = true;
AnimAttack = false;
AnimDie = false;
AnimShoot = true;
}
function ShootGun (){
var nBullet = Instantiate(bullet, spawnPoint.position, spawnPoint.rotation);
nBullet.GetComponent.<Rigidbody>().velocity = spawnPoint.TransformDirection(Vector3(0,0,100));
//Check collision here!!!
}