Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- [RequireComponent(typeof(Animator))]
- [RequireComponent(typeof(SphereCollider))]
- public abstract class AEnemy : MonoBehaviour
- {
- [SerializeField] private float _viewDistance = default;
- protected float ViewDistance => _viewDistance;
- [SerializeField] private float _viewAngle = default;
- protected float ViewAngle => _viewAngle;
- [SerializeField] private int _startingLife = default;
- protected int life = default;
- [SerializeField] private Light _light = default;
- protected Animator animator = default;
- public abstract void OnDamaged();
- public abstract void Die();
- public abstract void OnAlert();
- public abstract void OnBait();
- protected abstract void OnViewZombie(AZombie zombie);
- protected void Start()
- {
- life = _startingLife;
- _light.range = ViewDistance;
- _light.spotAngle = ViewAngle;
- animator = GetComponent<Animator>();
- var sc = GetComponent<SphereCollider>();
- Debug.Log($"Sphere Collider: {sc}");
- sc.radius = ViewDistance;
- }
- protected void OnTriggerStay(Collider other)
- {
- AZombie zombie = other.transform.GetComponent<AZombie>();
- if (zombie == null)
- return;
- Vector3 distanceVector = zombie.transform.position - transform.position;
- if (!Physics.Raycast(transform.position, distanceVector, out RaycastHit hit, ViewDistance))
- return;
- if (hit.transform.GetComponent<AZombie>() == null)
- return;
- OnViewZombie(zombie);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement