找回密码
 立即注册
查看: 4967|回复: 94

[基础] Unity 3D 第七课 简单的AI 漫游模式

  [复制链接]
发表于 2013-3-4 23:01 | 显示全部楼层 |阅读模式
资源信息 Tutorial Information
教程名称: Unity 3D 第七课 简单的AI 漫游模式(发帖教程)
适用引擎:   (适用引擎,为空默认为Unity)
教程语种: 中文
教程等级: 1
教程格式: 图文(请用IE9以上浏览器访问本版块)
教程作者: 转载自互联网 (如有问题请短消息联系作者或发表回复)
下载地址: (兑换积分)
点击查看原图
美丽分割线

今天给大家讲讲AI漫游模式,模型还是用之前几个课里用到的引擎自带的模型。

在一些大型游戏里,我们看到的敌人都有6种模式,站立、行走、奔跑、暂停、检测、攻击;今天我在这里给大家讲下前4种模式:站立、行走、奔跑、暂停
先定义下敌人的4种模式:

  • //敌人站立状态
  • public const int ENEMY_STAND = 0;
  • //敌人行走状态
  • public const int ENEMY_WALK = 1;
  • //敌人奔跑状态
  • public const int ENEMY_RUN = 2;
  • //敌人暂停状态
  • public const int ENEMY_PAUSE = 3;

复制代码

也要记录下敌人的状态:
  • private int enemyState;

复制代码

备份敌人暂停思考的时间:
  • private float backUptime;

复制代码

敌人思考下一次行为的世间,我们设置为1,很活跃的敌人…呵呵…
  • public const int AI_THINK_TIME = 1;

复制代码

初始化敌人状态为站立状态:
  • enemyState = ENEMY_STAND;

复制代码

开始执行AI,敌人进行漫游,思考状态:
  • //计算敌人思考时间
  • if(Time.time - backUptime >= AI_THINK_TIME)
  • {
  • //敌人开始思考
  •      backUptime = Time.time;
  • //取得0---2之间的随机数
  •       int rand = Random.Range(0,2);
  •                                 if(rand == 0)
  •                                 {
  • //敌人进入站立状态
  •                                         enemyState = ENEMY_STAND;
  •                                 }
  •                                 else if(rand == 1)
  •                                 {
  • //敌人进入行走状态,以及随机旋转角度
  •                                         Quaternion rotate = Quaternion.Euler(0,Random.Range(1,5) * 90,0);
  • //1秒钟完成敌人旋转
  •                                         transform.rotation = Quaternion.Slerp(transform.rotation,rotate,Time.deltaTime * 1000);
  • //播放行走动画
  •                                         gameObject.animation.Play("walk");
  •                                         enemyState = ENEMY_WALK;
  •                                 }
  •                         }

复制代码

下面贴出全部代码:
  • using UnityEngine;
  • using System.Collections;

    public class Enemy : MonoBehaviour {

  •         public const int ENEMY_STAND = 0;
  •         public const int ENEMY_WALK = 1;
  •         public const int ENEMY_RUN = 2;
  •         public const int ENEMY_PAUSE = 3;
  •         private int enemyState;
  •         private float backUptime;
  •         public const int AI_THINK_TIME = 1;
  •         void Start ()
  •         {
  •                 enemyState = ENEMY_STAND;
  •         }
  •         void Update ()
  •         {
  •                      if(Time.time - backUptime >= AI_THINK_TIME)
  •                         {
  •                                 backUptime = Time.time;
  •                                 int rand = Random.Range(0,2);
  •                                 if(rand == 0)
  •                                 {
  •                                         enemyState = ENEMY_STAND;
  •                                 }
  •                                 else if(rand == 1)
  •                                 {
  •                                         Quaternion rotate = Quaternion.Euler(0,Random.Range(1,5) * 90,0);
  •                                         transform.rotation = Quaternion.Slerp(transform.rotation,rotate,Time.deltaTime * 1000);
  •                                         enemyState = ENEMY_WALK;
  •                                 }
  •                         }
  •                 switch(enemyState)
  •                 {
  •                 case ENEMY_STAND:
  •                         gameObject.animation.Play("idle");
  •                         break;
  •                 case ENEMY_WALK:
  •                         gameObject.animation.Play("walk");
  •                         transform.Translate(Vector3.forward * Time.deltaTime);
  •                         break;
  •                 }
  •         }
  • }


复制代码

现在把这个代码拖到你的人物模型上,在运行游戏,人物就能进行漫游模式了…

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 4鲜花 +1 +6 收起 理由
yugo215 + 2 赞一个!
graywolfx21 + 1 很给力!
readma + 1 + 1 赞一个!
fuoop + 2

查看全部评分

发表于 2013-4-8 03:42 | 显示全部楼层
Good!!I am love  it!!
发表于 2013-4-20 20:39 | 显示全部楼层
{:5_427:}{:5_427:}{:5_427:}{:5_427:}{:5_427:}{:5_427:}{:5_427:}{:5_427:}
发表于 2013-4-23 09:47 | 显示全部楼层
无私lz  我必回帖
发表于 2013-6-5 08:46 | 显示全部楼层

感谢楼主的无私分享!{:soso__11402694654016840197_7:}
发表于 2013-6-5 10:00 | 显示全部楼层
很不錯~謝謝樓主分享~學習了{:soso_e183:}
发表于 2013-6-5 12:32 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2013-6-6 12:02 | 显示全部楼层
謝謝樓主分享
學習中
发表于 2013-8-8 18:45 | 显示全部楼层
gx感谢楼主无私奉献
发表于 2017-2-18 10:29 | 显示全部楼层
好帖就是要顶
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-4-29 00:30 , Processed in 0.144648 second(s), 35 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表