Unity3D怪物基本AI

本文介绍如何在Unity3D中为怪物创建基本的AI行为,包括站立、行走、奔跑状态,并通过判断玩家与怪物的距离决定怪物的行为。当玩家接近到一定距离时,怪物会进入攻击状态,向玩家奔跑并调整方向。除此之外,怪物会在预设的思考时间内随机选择站立或行走状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

欢迎来到unity学习unity培训unity企业培训教育专区,这里有很多U3D资源U3D培训视频我们致力于打造业内unity3d培训学习第一品牌。


       所谓怪物AI就是指我们为怪物编写一定的算法,使其可以具备一定程度的智能化,以增强游戏的可玩性。在一般的RPG游戏中,怪物通常在一个游戏设定的范围内巡逻,当玩家进入怪物的警戒范围时,怪物就会由巡逻状态转变为攻击状态,向玩家进行攻击,那么,我们今天就来实现一个简单的怪物AI吧,下面我们一起来看代码:
public class AI : MonoBehaviour {

//定义怪物的四种状态:站立、行走、奔跑、无所事事
public const int STATE_STAND=0;
public const int STATE_WALK=1;
public const int STATE_RUN=2;

//怪物当前状态
private int NowState;
//游戏角色
public GameObject Hero;
//怪物思考时间
public const int AI_THINK_TIME=2;
//触发怪物攻击的临界距离
public const int AI_ATTACT_DISTANCE=10;

//上一次思考的时间
private float LastThinkTime;

void Start () 
{

}

void Update () 
{
//当敌人与怪物间的距离小于攻击范围半径的时候
if(Vector3.Distance(transform.position,Hero.transform.position)<AI_ATTACT_DISTANCE)
{
//敌人开始奔跑
this.GetComponent<Animation>().Play("run");
//敌人进入奔跑状态
NowState=STATE_RUN;
//使敌人面向角色
transform.LookAt(Hero.transform);
//向玩家靠近
transform.Translate(Vector3.forward*Time.deltaTime * 5);
}else
{
//当当前时间与上一次思考时间的差值大于怪物的思考时间时怪物开始思考
if(Time.time-LastThinkTime>AI_THINK_TIME)
{
//开始思考
LastThinkTime=Time.time;
//获取0-3之间的随机数字
int Rnd=Random.Range(0,2);
//根据随机数值为怪物赋予不同的状态行为
switch(Rnd)
{
case 0:
//站立状态
this.GetComponent<Animation>().Play("idle");
NowState=STATE_STAND;
break;

case 1:
//行走状态
//使怪物旋转以完成行走动作
Quaternion mRotation=Quaternion.Euler(0,Random.Range(1,5)*90,0);
transform.rotation=Quaternion.Slerp(transform.rotation,mRotation,Time.deltaTime*1000);
//播放动画
this.GetComponent<Animation>().Play("walk");
//改变位置
transform.Translate(Vector3.forward*Time.deltaTime * 3);
NowState=STATE_WALK;
break;

case 2:
//奔跑状态
this.GetComponent<Animation>().Play("run");
transform.Translate(Vector3.forward*Time.deltaTime * 5);
NowState=STATE_RUN;
break;

}
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值