I made a chase script for my Enemy and he has to calculate the distance between the player and an object to change a boolean. Here is the script. (It is in c#)
using UnityEngine;
using System.Collections;
public class chase : MonoBehaviour {
public Transform player;
public Animator anim;
public float angle;
public float distance;
public float health = 1;
public GameObject me;
public float speed;
public float attackingdistance;
public GameObject stick;
public bool blowupable;
private Vector3 mevec;
public float newdistance;
// Use this for initialization
void Start ()
{
anim = GetComponent<Animator>();
blowupable = false;
}
// Update is called once per frame
void Update ()
{
Debug.DrawLine(player.position, me.transform.position);
blowupable = false;
**if (Vector3.Distance(me.transform.position, player.transform.position) * Time.deltaTime < newdistance)
{
blowupable = true;
}**
if (Input.GetKey(KeyCode.P))
{
Application.LoadLevel("Tutorial-start");
}
transform.rotation = Quaternion.Euler(0, transform.eulerAngles.y, 0);
Vector3 direction = player.position - this.transform.position;
if (GetComponent<Animator>().GetBool("isAttacking") == true) {
Invoke("LoseHeart", 3);
}
if(Vector3.Distance(player.position, this.transform.position) < distance)
{
direction.y = 0;
this.transform.rotation = Quaternion.Slerp(this.transform.rotation,
Quaternion.LookRotation(direction), 0.1f);
anim.SetBool("isIdle",false);
if(direction.magnitude > attackingdistance)
{
blowupable = true;
this.transform.Translate(0,0,speed);
anim.SetBool("isWalking",true);
anim.SetBool("isAttacking",false);
}
else
{
anim.SetBool("isAttacking",true);
anim.SetBool("isWalking",false);
}
}
else
{
anim.SetBool("isIdle", true);
anim.SetBool("isWalking", false);
anim.SetBool("isAttacking", false);
}
if (health <= 0)
{
anim.SetBool("isDead", true);
anim.SetBool("isWalking", false);
anim.SetBool("isAttacking", false);
anim.SetBool("isIdle", false);
StartCoroutine(Example());
}
if (Input.GetKeyDown(KeyCode.E))
{
health --;
}
}
IEnumerator Example()
{
yield return new WaitForSeconds(1);
Destroy(me);
}
IEnumerator Example1()
{
yield return new WaitForSeconds(1);
}
void LoseHeart()
{
if(GetComponent<Animator>().GetBool("isAttacking") == true)
{
stick.GetComponent<BotControlScript>().health--;
Update();
}
else
{
Update();
}
}
}
`
It always keeps blowupable true. Please help