Added Unity project for AI

Added FSM examples
This commit is contained in:
2026-04-20 12:49:00 +02:00
parent af72eec045
commit 3e8a3a56cf
83 changed files with 8059 additions and 0 deletions
+51
View File
@@ -0,0 +1,51 @@
using System;
using UnityEngine;
namespace AI.FSM
{
public class IdleState : IState
{
private GameObject _owner;
private Transform _player;
private float _viewAngle;
public IdleState(GameObject owner, Transform player, float viewAngle)
{
_owner = owner;
_player = player;
_viewAngle = viewAngle;
}
public void Enter(IFiniteStateMachine fsm)
{
Debug.Log("IdleState Enter");
}
public void Update(IFiniteStateMachine fsm)
{
Debug.Log("IdleState Update");
// view angle
float angle = Vector3.Angle(_owner.transform.forward, _player.position - _owner.transform.position);
if (angle > _viewAngle) return;
// raycast
RaycastHit hit;
if (!Physics.Raycast(_owner.transform.position, _player.position - _owner.transform.position, out hit,
100f))
{
return;
}
PlayerController playerController = hit.collider.GetComponent<PlayerController>();
if (!playerController) return;
fsm.SetState(new PlayerDetectedState(_owner, _player, 10.0f));
}
public void Exit(IFiniteStateMachine fsm)
{
Debug.Log("IdleState Exit");
}
}
}