Files
2026-05-20 19:47:36 +02:00

73 lines
1.8 KiB
C#

using UnityEngine;
public class EnemyPatrol : MonoBehaviour
{
[Header ("Patrol Points")]
[SerializeField] private Transform leftEdge;
[SerializeField] private Transform rightEdge;
[Header("Enemy")]
[SerializeField] private Transform enemy;
[Header("Movement parameters")]
[SerializeField] private float speed;
private Vector3 initScale;
private bool movingLeft;
[Header("Idle Behaviour")]
[SerializeField] private float idleDuration;
private float idleTimer;
[Header("Enemy Animator")]
[SerializeField] private Animator anim;
private void Awake()
{
initScale = enemy.localScale;
}
private void OnDisable()
{
anim.SetBool("moving", false);
}
private void Update()
{
if (movingLeft)
{
if (enemy.position.x >= leftEdge.position.x)
MoveInDirection(-1);
else
DirectionChange();
}
else
{
if (enemy.position.x <= rightEdge.position.x)
MoveInDirection(1);
else
DirectionChange();
}
}
private void DirectionChange()
{
anim.SetBool("moving", false);
idleTimer += Time.deltaTime;
if(idleTimer > idleDuration)
movingLeft = !movingLeft;
}
private void MoveInDirection(int _direction)
{
idleTimer = 0;
anim.SetBool("moving", true);
//Make enemy face direction
enemy.localScale = new Vector3(Mathf.Abs(initScale.x) * _direction,
initScale.y, initScale.z);
//Move in that direction
enemy.position = new Vector3(enemy.position.x + Time.deltaTime * _direction * speed,
enemy.position.y, enemy.position.z);
}
}