using System.Collections; using System.Collections.Generic; using UnityEngine; public class EnemyCharge : BaseEnemy { public float DetectionDistance; public float ChargeSpeed; public bool Charging = false; public LayerMask lm; public bool FallOffLedge = false; void FixedUpdate() { Vector2 fwd; if (!sr.flipX) { // Raycast to check if player is in front with layermask to prevent it from detecting itself fwd = transform.TransformDirection (Vector2.right); } else { fwd = transform.TransformDirection (Vector2.left); } RaycastHit2D hit; Debug.DrawRay (transform.position, fwd); hit = Physics2D.Raycast (transform.position, fwd, DetectionDistance, lm); if (hit) { if (hit.collider.gameObject.CompareTag ("Player")) {//If it sees an object with tag "Player", Charging will be true Charging = true; } } if (Charging) { //Will stop or keep going based on FallOffLedge bool if (!FallOffLedge) { if (!CheckCollision (fwd, sr.flipX ? leftCollisionPos.position : rightCollisionPos.position)) { Charging = false; return; } } else { if (!CheckCollisionCharge (fwd, sr.flipX ? leftCollisionPos.position : rightCollisionPos.position)) { Charging = false; return; } } Move (fwd); speed = ChargeSpeed; } } }