AI动作:
没发现玩家时:待机、巡逻、做动作
发现玩家:追击、攻击、返回原位
有限状态机(FSM):管理AI的有限状态,达成什么条件就切换到相应的状态
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
using UnityEngine.SceneManagement;
//举例AI的几种行为
public enum EnemyState
{
Idle,//待机0
Patrol,//巡逻1
Chase,//追击
Attck,//攻击
Die,//死亡
Back,//返回原点
}
public class EnemyAI : MonoBehaviour
{
//保存当前状态
public EnemyState curSyate;
//拿到自动寻路组件
NavMeshAgent agent;
//拿到动画组件
Animator animator;
//待机参数
//待机时间
float patrol_wait_time = 5f;
//计时器
float time = 0;
//巡逻参数
//巡逻半径
float Patrol_Radius = 15f;
//巡逻速度
float Patrol_Speed = 2f;
//追击参数
//追击目标
public Transform Target;
//AI感知范围
float chase_radius = 8f;
//追击速度
float Chase_Speed = 5f;
//攻击参数
//攻击距离
float attack_radius = 2.5f;
//攻击冷却
float Attack_Timer = 0f;
void Start()
{
//初始化状态
curSyate = EnemyState.Idle;
animator = GetComponent<Animator>();
agent = GetComponent<NavMeshAgent>();
}
void Update()
{
Check();
/*
添加动画:
1、确定当前状态;
2、用anyState来连接各个动画,因为不确定AI啥时候会切换到什么状态
3、将枚举变量换成int类型
*/
animator.SetInteger("EnemyState", (int)curSyate);
//时刻监听当前状态
switch (curSyate)
{
case EnemyState.Idle:
Idle();
break;
case EnemyState.Patrol:
Patro

这篇博客探讨了在Unity游戏引擎中如何利用人工智能实现角色的巡逻行为。AI角色在未发现玩家时会进行待机、巡逻和做动作,一旦发现玩家,则会转为追击、攻击并最终返回原位。文章核心是通过有限状态机(FSM)来管理AI的不同状态,根据预设条件进行状态切换,以实现复杂的游戏逻辑。
1071

被折叠的 条评论
为什么被折叠?



