Hi i need a bit of help… at the moment i have a script SHOOT.cs
using UnityEngine;
using System.Collections;
public class Shoot : MonoBehaviour
{
public GameObject Shootpoint;
private RaycastHit hit;
private float range = 600f;
private float fireRate = 0.6f;
private float nextFire;
private Enemy_AI enemy_aiScript;
void Start()
{
}
void Update()
{
CheckInput ();
Invoke ("CheckZombie", 2);
}
void CheckZombie()
{
enemy_aiScript = GameObject.Find("Zombie").GetComponent<Enemy_AI>;
}
void CheckInput ()
{
//checking the button and firerate
if (Input.GetButton ("Fire1")&&Time.time>nextFire)
{
//adding to firerate
nextFire = Time.time + fireRate;
//to see the raycast
Debug.DrawRay (Shootpoint.transform.TransformPoint (0, 0, 1), Shootpoint.transform.forward, Color.green, 10);
//creating raycast
if (Physics.Raycast (Shootpoint.transform.TransformPoint (0, 0, 1), Shootpoint.transform.forward, out hit, range))
{
//checking if Zombie is hit
if (hit.transform.CompareTag ("Zombie"))
{
Debug.Log ("Zombie " + enemy_aiScript.ZomCurHealth);
enemy_aiScript.Damage (10);
} else
{
Debug.Log ("Not Zombie " + hit.transform.name);
}
}
}
}
}
what i am trying to do is access the zombie script. so that each time a raycast hits it does damge10
using UnityEngine;
using System.Collections;
public class Enemy_AI : MonoBehaviour
{
public float enemyLookDistance;
public float attackDistance;
public float enemyMoveSpeed;
public float enemyRotSpeed;
//zombie health
public float ZomMaxHealth = 100;
public float ZomCurHealth = 100;
//brainPrefab.
public GameObject zombieBrain;
//private static zombie instance;
private Transform target;
//private Renderer myRender;
private Animator anim;
void Awake()
{
anim = GetComponent<Animator> ();
//myRender = GetComponent<Renderer> ();
ZomCurHealth = ZomMaxHealth;
}
// Update is called once per frame
void Update ()
{
//make sure the player exists
if (target == null)
{
target = Player.GetTransform();
if (target == null)
{
//default to wander aimlessly if there is no player
Wander();
return;
}
}
float fpsTargetDistance = Vector3.Distance (target.position, transform.position);
if (fpsTargetDistance < attackDistance)
{
ChasePlayer ();
return;
}
if (fpsTargetDistance < enemyLookDistance)
{
Alerted();
return;
}
//default to Wander mode
Wander ();
}
public void Damage(float amount)
{
ZomCurHealth -= amount;
if (ZomCurHealth <= 0)
{
GameObject brains = GameObject.Instantiate<GameObject> (zombieBrain);
brains.transform.position = transform.position;
brains.transform.rotation = Quaternion.identity;
GameObject.Destroy(brains,20);
Destroy (gameObject);
}
}
void Alerted()
{
anim.Play ("Walk1", 0);
//myRender.material.color = Color.yellow;
Quaternion rotation = Quaternion.LookRotation (target.position - transform.position);
transform.rotation = Quaternion.Slerp (transform.rotation, rotation, Time.deltaTime * enemyRotSpeed);
transform.position += transform.forward * 1 * Time.deltaTime;
}
//chase the player
void ChasePlayer ()
{
anim.Play ("Run2", 0);
//myRender.material.color = Color.red;
Quaternion rotation = Quaternion.LookRotation (target.position - transform.position);
transform.rotation = Quaternion.Slerp (transform.rotation, rotation, Time.deltaTime * enemyRotSpeed);
transform.position += transform.forward * enemyMoveSpeed * Time.deltaTime;
}
//wandering
void Wander ()
{
//var
float heading;
Vector3 targetRotation;
//script
heading = Random.Range(0, 360);
transform.eulerAngles = new Vector3(0, heading, 0);
targetRotation = new Vector3(0, heading, 0);
//Quaternion rotation = Quaternion.LookRotation (heading);
//transform.rotation = Quaternion.Slerp (transform.rotation, rotation, Time.deltaTime * enemyRotSpeed);
transform.eulerAngles = Vector3.Slerp(transform.eulerAngles, targetRotation, Time.deltaTime * 5);
transform.position += transform.forward * 1 * Time.deltaTime;
//Play The Animation
anim.Play ("Idle", 0);
}
}