using System.Collections; using System.Collections.Generic; using Platformer.Gameplay; using UnityEngine; using static Platformer.Core.Simulation; namespace Platformer.Mechanics { /// /// A simple controller for enemies. Provides movement control over a patrol path. /// [RequireComponent(typeof(AnimationController), typeof(Collider2D))] public class EnemyController : MonoBehaviour { public PatrolPath path; public AudioClip ouch; internal PatrolPath.Mover mover; internal AnimationController control; internal Collider2D _collider; internal AudioSource _audio; SpriteRenderer spriteRenderer; public Bounds Bounds => _collider.bounds; void Awake() { control = GetComponent(); _collider = GetComponent(); _audio = GetComponent(); spriteRenderer = GetComponent(); } void OnCollisionEnter2D(Collision2D collision) { var player = collision.gameObject.GetComponent(); if (player != null) { var ev = Schedule(); ev.player = player; ev.enemy = this; } } void Update() { if (path != null) { if (mover == null) mover = path.CreateMover(control.maxSpeed * 0.5f); control.move.x = Mathf.Clamp(mover.Position.x - transform.position.x, -1, 1); } } } }