unity3D游戏开发之人工智能AI

unity3D游戏开发之人工智能AI

ID:39891061

大小:559.50 KB

页数:13页

时间:2019-07-14

unity3D游戏开发之人工智能AI_第1页
unity3D游戏开发之人工智能AI_第2页
unity3D游戏开发之人工智能AI_第3页
unity3D游戏开发之人工智能AI_第4页
unity3D游戏开发之人工智能AI_第5页
资源描述:

《unity3D游戏开发之人工智能AI》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、很久没有写Unity3D相关的东西了,是因为这段时间我深陷一款IOS的软件开发中。不过以后我还是会回归Unity3D游戏开发的。什么语言都在用,生活与工作都挺给力的嚯嚯。今天还是打开了久违的Unity3D编辑器,那我就写点东西吧,今天我想说的是游戏中的人工智能。人工智能这个东西在游戏中是非常重要的,人工智能说简单了就是根据随机的数字让敌人执行一些动作或逻辑,说难了TA需要一个非常复杂的算法,本文我主要说说Unity3D中人工智能的脚本如何来编写。 首先你应该搞清楚的一点AI脚本属于一个工具类脚本,工具类脚本的含义就是他应当是由策划人员来绑定游戏对象使用的。也就是说AI脚本程序员应当写的非常的灵

2、活,策划人员可以通过修改脚本对外的变量数值接口就能控制其中的敌人AI。接着创建一个c#脚本AI.CS,如下图所示,目前脚本对外留出枚举接口变量,策划人员在使用这条脚本时选择对应敌人类型即可。(注:这里仅仅是示例,细致的话还可以将很多敌人详细的信息写入,如:攻击速度、技能类型、移动速度、命中率、攻击百分比、等等,但是一定要让你的脚本写的比较灵活,策划人员在外面选择即可完成)因为目前是一个示例,所以我在这里只简单的区分的敌人类型。文章来自【狗刨学习网】  下面时这段简单AI的脚本AI.CSC#12345678910111213usingUnityEngine;usingSystem.Collect

3、ions; //这里是枚举选择敌人类型publicenumEnemyType{Enemy0,Enemy1} publicclassAI:MonoBehaviour{ //敌人类型枚举有策划人员选择14151617181920212223242526272829303132333435publicEnemyTypeenemyType=EnemyType.Enemy0; //主角游戏对象publicGameObjectplayer; //敌人状态普通状态旋转状态奔跑状态追击主角状态攻击主角状态privateconstintEMEMY_NORMAL=0;privateconstintEMEMY_RO

4、TATION=1;privateconstintEMEMY_RUN=2;privateconstintEMEMY_CHASE=3;privateconstintEMEMY_ATTACK=4; //记录当前敌人状态根据不同类型敌人播放不同动画privateintstate;//旋转状态,敌人自身旋转privateintrotation_state;//记录敌人上一次思考时间privatefloataiThankLastTime; voidStart(){36373839404142434445464748495051525354555657//初始话标志敌人状态以及动画为循环播放state=EM

5、EMY_NORMAL;this.animation.wrapMode=WrapMode.Loop;} voidUpdate(){//根据策划选择的敌人类型这里面会进行不同的敌人AIswitch(enemyType){caseEnemyType.Enemy0:updateEnemyType0();break;caseEnemyType.Enemy1:updateEnemyType1();break;}} //更新第一种敌人的AIvoidupdateEnemyType0(){58596061626364656667686970717273747576777879//这个AI比较简单,当主角与他的距

6、离小于10米时,他将始终朝向这主角if(Vector3.Distance(player.transform.position,this.transform.position)<=10){this.transform.LookAt(player.transform);}} //更新第二种敌人的AIvoidupdateEnemyType1(){ //判断敌人是否开始思考if(isAIthank()){//敌人开始思考AIthankEnemyState(3);}else{//更新敌人状态UpdateEmenyState();80818283848586878889909192939495969798

7、99100}} intgetRandom(intcount){ returnnewSystem.Random().Next(count); } boolisAIthank(){//这里表示敌人每3秒进行一次思考if(Time.time-aiThankLastTime>=3.0f){aiThankLastTime=Time.time;returntrue; }returnfalse;} 101102

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。