using System.Collections; using System.Collections.Generic; using UnityEngine; public class Bat : Enemy { private Rigidbody2D rB; private GameObject player; public float range; public float moveDelay; public float moveSpeed; public float knockbackPower; private bool canMove; // Use this for initialization public override void Start () { base.Start(); rB = GetComponent (); canMove = true; } // Update is called once per frame public override void Update () { if (OnScreen) { base.Update(); if (!player) { player = GameObject.FindGameObjectWithTag ("Player"); } else { float distance = Vector2.Distance (transform.position, player.transform.position); if (distance < range && canMove) { Move (); canMove = false; StartCoroutine (MoveDelay ()); } } } } void OnTriggerEnter2D(Collider2D other) { PlayerController player = other.gameObject.GetComponent (); if (player && !getIsDead()) { player.GetHit (GetDamage(), transform.position, knockbackPower); } } void Move() { rB.AddForce (Vector3.Normalize(player.transform.position - transform.position) * moveSpeed, ForceMode2D.Impulse); } public override void Damage(float damageToDo, Vector3 hitPos, float knockback) { base.Damage(damageToDo, hitPos, knockback); } public override void Die() { base.Die (); GetComponent ().enabled = false; GetComponent ().simulated = false; } public override void Respawn() { base.Respawn (); GetComponent ().enabled = true; GetComponent ().simulated = true; } IEnumerator MoveDelay() { yield return new WaitForSeconds (moveDelay); canMove = true; } }