转自http://blog.csdn.net/zhangxiao13627093203/article/details/47451063

尽管随机运动可能完全不可预知,它还是相当无趣的,因为它完全是以相同的方式工作——完全随机。下面要学习到的算法是根据具体环境作出不同响应的处理。作为例子,这里选择了追踪算法。追踪AI考虑到跟踪目标的位置,然后改变AI对象的轨道好让它移向被追踪的对象。

追踪可以是将方向矢量直接指向目标,或者采用跟真实的模型,使得物体像导弹那样行动。

本文将的就是第一种,直接矢量追踪,效果如下图所示:

通过键盘方向键控制幽灵,然后蚊子会追踪幽灵,在这里我做了一些界面处理,当蚊子或者幽灵运动超过了屏幕范围的时候让它们出现在屏幕的另一边而不是消失在屏幕上

代码如下:

  1. using UnityEngine;
  2. using System.Collections;
  3. using UnityEngine.UI;
  4.  
  5. public class AITrack : MonoBehaviour {
  6. public Image target;
  7. public float moveSpeed;//追踪目标移动速度
  8. public float targetSpeed;//追踪速度
  9. public float target_x;//追踪移动的单位量
  10. public float target_y;
  11. // Use this for initialization
  12. void Start () {
  13.  
  14. }
  15. // Update is called once per frame
  16. void Update () {
  17. MoveTarget();
  18. Track_AI();
  19. }
  20. void Track_AI()
  21. {
  22. //x方向的追踪
  23. if(target.transform.position.x>this.transform.position.x)
  24. {
  25. this.transform.position += new Vector3(target_x, 0, 0)*targetSpeed;
  26. }
  27. else if(target.transform.position.x<this.transform.position.x)
  28. {
  29. this.transform.position -= new Vector3(target_x, 0, 0)*targetSpeed;
  30. }
  31. //y方向的追踪
  32. if(target.transform.position.y>this.transform.position.y)
  33. {
  34. this.transform.position += new Vector3(0, target_y, 0)*targetSpeed;
  35. }
  36. else if(target.transform.position.y<this.transform.position.y)
  37. {
  38. this.transform.position -= new Vector3(0, target_y, 0)*targetSpeed;
  39. }
  40. //检测是否超出了边界
  41. if(this.transform.position.x>=Screen.width)
  42. {
  43. this.transform.position = new Vector3(-this.GetComponent<Image>().rectTransform.lossyScale.x, 0, 0);
  44. }
  45. else if(this.transform.position.x<-this.GetComponent<Image>().rectTransform.lossyScale.x)
  46. {
  47. this.transform.position = new Vector3(Screen.width, this.transform.position.y, 0);
  48. }
  49. if(this.transform.position.y>=Screen.height)
  50. {
  51. this.transform.position = new Vector3(this.transform.position.x,-this.GetComponent<Image>().rectTransform.lossyScale.y, 0);
  52. }
  53. else if(this.transform.position.y<-this.GetComponent<Image>().rectTransform.lossyScale.y)
  54. {
  55. this.transform.position = new Vector3(this.transform.position.x, Screen.height, 0);
  56. }
  57. }
  58. void MoveTarget()
  59. {
  60. float x = Input.GetAxis("Horizontal")*100;
  61. float y = Input.GetAxis("Vertical")*100;
  62.  
  63. target.transform.Translate(x*Time.deltaTime*moveSpeed,y*Time.deltaTime*moveSpeed,0);
  64. //如果超出屏幕范围则让它出现在另一面
  65. if (target.transform.position.x >= Screen.width)
  66. {
  67. //使用了Image的target.rectTransform.lossyScale.x来表示显示的图片宽度
  68. target.transform.position = new Vector3(-target.rectTransform.lossyScale.x, target.transform.position.y, 0);
  69. }
  70. else if(target.transform.position.x<-target.rectTransform.lossyScale.x)
  71. {
  72. target.transform.position = new Vector3(Screen.width, target.transform.position.y, 0);
  73. }
  74. if(target.transform.position.y>=Screen.height)
  75. {
  76. target.transform.position = new Vector3(target.transform.position.x, -target.rectTransform.lossyScale.y, 0);
  77. }
  78. else if(target.transform.position.y<-target.rectTransform.lossyScale.y)
  79. {
  80. target.transform.position = new Vector3(target.transform.position.x, Screen.height, 0);
  81. }
  82. }
  83. }

  

Unity人工智能学习—确定性AI算法之追踪算法一的更多相关文章

  1. Unity人工智能学习—确定性AI算法之追踪算法二

    转自:http://blog.csdn.net/zhangxiao13627093203/article/details/47658673 上一篇讲到了追踪算法的比较简单的形式,看上去比较假,因为AI ...

  2. AI 经典书单 | 人工智能学习该读哪些书

    转载 2018年01月16日 00:00:00   人工智能相关岗位中,涉及到的内容包含: 算法.深度学习.机器学习.自然语言处理.数据结构.Tensorflow.Python .数据挖掘.搜索开发. ...

  3. 游戏人工智能 读书笔记 (四) AI算法简介——Ad-Hoc 行为编程

    本文内容包含以下章节: Chapter 2 AI Methods Chapter 2.1 General Notes 本书英文版: Artificial Intelligence and Games ...

  4. 【中国象棋人机对战】引入了AI算法,学习低代码和高代码如何混编并互相调用

    以低代码和高代码(原生JS代码)混编的方式引入了AI算法,学习如何使用表达式调用原生代码的.整个过程在众触低代码应用平台进行,适合高阶学员. AI智能级别演示 AI算法分三个等级,体现出来的智能水平不 ...

  5. 【AI】微软人工智能学习笔记(一)

    数据分析平台 01|数据平台概况图示 上面图中所示就是微软人工智能数据平台的相关的技术. 02.1| Cortana Intelligence Suite 从上面图中可以看到, 其中有一个Cortan ...

  6. AI人工智能学习数据集

    AI人工智能学习数据集,列表如下. 商务合作,科技咨询,版权转让:向日葵,135—4855__4328,xiexiaokui#qq.com boston_house_prices.csvbreast_ ...

  7. 聊聊找AI算法岗工作

    https://blog.csdn.net/weixin_42137700/article/details/81628028 首先,本文不是为了增加大家的焦虑感,而是站在一名学生的角度聊聊找AI算法岗 ...

  8. 2017人工智能元年,AI在喧嚣和质疑中一路走来

    前百度首席科学家吴恩达说:就像100年前的电力.20年前的互联网一样,AI也会改变每一个产业! 有人说,现在就像1995年,那一年,第一家互联网公司--网景上市,一天之内大涨208%,互联网正式登上历 ...

  9. 曼孚科技:AI算法领域常用的39个术语(下)

    算法是人工智能(AI)核心领域之一. 本文整理了算法领域常用的39个术语,希望可以帮助大家更好地理解这门学科. 本文为下半部分,上半部分见本账号上一篇文章. 19.迁移学习(Transfer Lear ...

随机推荐

  1. [原]MobileSubstrate 工作流程

    [附-腾讯安全管家替换 MobileSubstrate 的流程] com.qq.mqqsecure.deb-postinst--->QSCommand--->QSTempRunner

  2. ubuntu 下面手动安装jdk

    ubuntu 下面手动安装jdk 刚才在ubuntu安装jdk和eclipse,感觉主要安装jdk比较麻烦,记录一下笔记以备后面查看 先在官网上下载jdk的tar包:http://www.oracle ...

  3. 免费UI框架推荐--Charisma UI

    基于Jquery.Bootstrap的后台管理免费UI框架推荐--Charisma UI 在项目设计和开发工作中,做过一些后台管理系统的设计和开发,用的很多都是比较传统的UI框架. 老是走在这个圈子里 ...

  4. jQuery图片切换插件jquery.cycle.js

    Cycle是一个很棒的jQuery图片切换插件,提供了非常好的功能来帮助大家更简单的使用插件的幻灯功能 下载cycle插件并引入,此时,注意把引入它的代码放在引入jQuery主文件之后. <he ...

  5. escape,encodeURI,encodeURIComponent函数比较

    escape,encodeURI,encodeURIComponent函数比较 js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数 ...

  6. PostgreSQL9.1 with PostGIS 2.1.4 for mapping coordinates on linux/ubuntu 已经打包成deb 可下载

    For location based service, I try to use postgresql with postgis. You can download postgis from here ...

  7. 反向代理(Reverse Proxy)

    反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时 ...

  8. hive 不同用户 权限设置 出错处理

    今天安装了hive 在a账号安装的,一切正常 但是到其他账户下,报错 >show tables; Error in metadata: java.lang.RuntimeException: U ...

  9. [基础]RHEL6下LINUX服务器批量部署

      包准备:xinetd,tftp-server,dhcp,httpd,system-config-kickstart,syslinux,nfs   试验环境: 本机地址:192.168.46.98 ...

  10. 黑马程序员:Java基础总结----JavaBean 内省

    黑马程序员:Java基础总结 JavaBean 内省   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! JavaBean  内省 软件包 java.beans 包含与开 ...