裕华建设集团网站,徐州哪家公司做网站水平好,网站建设事宜,wordpress SEO模大家好。欢迎大家关注由我为大家带来的Unity3D游戏开发系列文章#xff0c;我的博客地址为#xff1a;http://blog.csdn.net/qinyuanpei。在上一篇文章中#xff0c;我们基本上实现了一个小地图的功能#xff0c;今天呢#xff0c;我们来实现怪物AI#xff0c;所谓怪物AI… 大家好。欢迎大家关注由我为大家带来的Unity3D游戏开发系列文章我的博客地址为http://blog.csdn.net/qinyuanpei。 在上一篇文章中我们基本上实现了一个小地图的功能今天呢我们来实现怪物AI所谓怪物AI就是指我们为怪物编写一定的算法。使其能够具备一定程度的智能化以增强游戏的可玩性。在一般的RPG游戏中怪物通常在一个游戏设定的范围内巡逻。当玩家进入怪物的警戒范围时怪物就会由巡逻状态转变为攻击状态向玩家进行攻击那么我们今天就来实现一个简单的怪物AI吧以下我们一起来看代码 [csharp] view plaincopyprint? using UnityEngine; using System.Collections; public class AI : MonoBehaviour { //定义怪物的四种状态站立、行走、奔跑、无所事事 public const int STATE_STAND0; public const int STATE_WALK1; public const int STATE_RUN2; //怪物当前状态 private int NowState; //游戏角色 public GameObject Hero; //怪物思考时间 public const int AI_THINK_TIME2; //触发怪物攻击的临界距离 public const int AI_ATTACT_DISTANCE10; //上一次思考的时间 private float LastThinkTime; void Start () { } void Update () { //当敌人与怪物间的距离小于攻击范围半径的时候 if(Vector3.Distance(transform.position,Hero.transform.position)AI_ATTACT_DISTANCE) { //敌人開始奔跑 this.GetComponentAnimation().Play(run); //敌人进入奔跑状态 NowStateSTATE_RUN; //使敌人面向角色 transform.LookAt(Hero.transform); //向玩家靠近 transform.Translate(Vector3.forward*Time.deltaTime * 5); }else { //当当前时间与上一次思考时间的差值大于怪物的思考时间时怪物開始思考 if(Time.time-LastThinkTimeAI_THINK_TIME) { //開始思考 LastThinkTimeTime.time; //获取0-3之间的随机数字 int RndRandom.Range(0,2); //依据随机数值为怪物赋予不同的状态行为 switch(Rnd) { case 0: //站立状态 this.GetComponentAnimation().Play(idle); NowStateSTATE_STAND; break; case 1: //行走状态 //使怪物旋转以完毕行走动作 Quaternion mRotationQuaternion.Euler(0,Random.Range(1,5)*90,0); transform.rotationQuaternion.Slerp(transform.rotation,mRotation,Time.deltaTime*1000); //播放动画 this.GetComponentAnimation().Play(walk); //改变位置 transform.Translate(Vector3.forward*Time.deltaTime * 3); NowStateSTATE_WALK; break; case 2: //奔跑状态 this.GetComponentAnimation().Play(run); transform.Translate(Vector3.forward*Time.deltaTime * 5); NowStateSTATE_RUN; break; } } } } } 在上面的代码中能够触发怪物状态发生变化的有两个条件第一是玩家进入了怪物的警范围。此时怪物将面向玩家奔跑靠近第二当前时间与怪物上一次思考的时间之差大于怪物的思考时间此时怪物将随机作出反应。 好。以下我们回到游戏界面其中来。 如图博主事先从官方资源商店里下载了一个人物模型。在这个模型中设计者已经为我们设计好了人物动画我们将这个模型拖放到场景中调整到合适的位置。并将人物默认动画设置为idle。以下我们将刚才写好的脚本拖放到此模型上并设置Hero为我们的玩家对象在这里我们使用了官方提供的第三人称角色控制器组件终于实现的效果例如以下 能够看到在不同的时刻。怪物能够自己运行不同的状态动作当玩家靠近怪物的时候。会被敌人追击这就是今天的内容啦谢谢大家 转载原文出处 转载于:https://www.cnblogs.com/mqxnongmin/p/10800022.html