查看: 2338|回复: 39

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

  [复制链接]

27

主题

18

听众

509

积分

大学生

Rank: 3Rank: 3

升级   0.6%

发表于 2013-3-4 23:01 |显示全部楼层
共享资源获取更多积分!share your resources get more credits!
资源信息 Tutorial Information
教程名称: Unity 3D 第七课 简单的AI 漫游模式(发布原创教程可获得更多积分哦!)
适用引擎: (资源适用引擎)
教程语种: 中文
教程等级: 小白(等级越高教程越难,但能学到的东西越多)
教程格式: 图文(请用IE9以上浏览器访问本版块)
教程作者: 转载自互联网 (如有问题请短消息联系作者或发表回复)
点击查看原图 --> 美丽分割线
回复可见
哇伊~ (((‵□′))回复太烦了,怒买VIP(充值金额将用于论坛采购更多资源)

--> 请先登录 --> 请先登录 --> 请先登录 --> 请先登录 --> 请先登录 --> 请先登录 -->

今天给大家讲讲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 人评分鲜花 道具币 收起 理由
yugo215 + 2 赞一个!
graywolfx21 + 1 很给力!
readma + 1 + 1 赞一个!
fuoop + 2

总评分: 鲜花 + 1  道具币 + 6   查看全部评分

0

主题

0

听众

7

积分

问题学生

Rank: 1

升级   3.5%

发表于 2013-4-8 03:42 |显示全部楼层
Good!!I am love  it!!
回复

使用道具 举报

0

主题

10

听众

202

积分

小学生

Rank: 2

升级   0.67%

发表于 2013-4-20 20:39 |显示全部楼层
回复

使用道具 举报

0

主题

10

听众

202

积分

小学生

Rank: 2

升级   0.67%

发表于 2013-4-23 09:47 |显示全部楼层
无私lz  我必回帖
回复

使用道具 举报

16

主题

14

听众

391

积分

小学生

打酱油的

Rank: 2

升级   63.67%

发表于 2013-6-5 08:46 |显示全部楼层

感谢楼主的无私分享!
回复

使用道具 举报

0

主题

10

听众

363

积分

小学生

Rank: 2

升级   54.33%

发表于 2013-6-5 10:00 |显示全部楼层
很不錯~謝謝樓主分享~學習了
回复

使用道具 举报

4

主题

9

听众

159

积分

剥夺政治权利2

发表于 2013-6-5 12:32 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

0

主题

10

听众

200

积分

小学生

Rank: 2

升级   0%

发表于 2013-6-6 12:02 |显示全部楼层
謝謝樓主分享
學習中
回复

使用道具 举报

0

主题

10

听众

205

积分

小学生

Rank: 2

升级   1.67%

发表于 2013-8-8 18:45 |显示全部楼层
gx感谢楼主无私奉献
回复

使用道具 举报

0

主题

10

听众

202

积分

小学生

Rank: 2

升级   0.67%

发表于 2017-2-18 10:29 |显示全部楼层
好帖就是要顶
回复

使用道具 举报

温馨提示:求助请到“Unity技术讨论”版块中发帖,便于集中解决!
您需要登录后才可以回帖 登录 | 立即注册

懒人模式:

关闭

站长推荐 上一条 /1 下一条

Unity3D游戏开发联盟(资源共享平台) -Unity3D,Unreal ( 苏ICP备12051100号 )   

GMT+8, 2018-12-12 02:27 , Processed in 0.137084 second(s), 90 queries .