AI 人工智能 探索 (三)】的更多相关文章

在写之前,先对昨天寻路插件再做一些补充,因为该插件不是很完善,所以当我发现有不能满足需求的时候,就会试图更改源代码,或增加接口来符合我的需求. 昨天补充了一条是 自身转向代码,今天补充另外一条,是及时改变路向.我们发现原始插件改变路向,必须要等角色到达目标点才能再做改变,我们在ai中希望是,当目标点改变,角色在半道就要改变新方向. 好了,解决该问题的方法很简单,只需要如下方法 public void OnStopFind() { m_bNavRequestCompleted = true; }…
三类子弹的设计 using UnityEngine; using System.Collections; public class AI : AssembleModel { private Hashtable table; private Transform target; void Start() { table = new Hashtable(); target = Spawner("Target");//单个创建 } void Update() { //方向 Vector3 mo…
这次我为 角色 attribute 添加了 多个属性 其中 att 是 好人 坏人 等属性, 显然 数字不同 就要打起来. grade 是智商属性 ,今天先做了 3的智商.也就是小兵智商.碰到就打 逃也要追着打 distance 是 可攻击距离 ,如果两个物体超过了 这个距离 就继续移动 小于这个距离就打 其他三个不解释,都能理解 private Transform otherTransforms;//碰撞对方 private bool track = true;//是否 可以 追踪 priva…
我们把做好的 角色 拖到 内存池,如图所示,这样我们可以动态生成角色并给予他 寻路目标. //逗留碰撞 void OnTriggerStay(Collider other) { if (other.transform.name == otherName) { //检测距离 float distance = Vector3.Distance(this.transform.position, other.transform.position);//距离公式 //根据距离 发射子弹, if (this…
我简单画了一幅图,来讲下 ai 中的设计模式.图形中的这些人物,我想大家都能看的明白. 当 盗贼出现,人们发现了他们,就 呼叫 主类,然后主类再  通知 下面对应的管理局,然后管理局再 分配人手过去 处理.当然红叉表示受伤,他呼叫的是 医院,没有受伤的,呼叫的是  警察局. 有人问,为什么不 直接 让 人 呼叫 医院或 警察局.反而通知 主类,再通知下面.因为,如果医院 有多个,以后还可有其他同类行增加,那么作为人呼叫具体地点的医院,显然不是很合理.有了以上这个呼叫模式,我们的ai就可以敲定如何…
完整被动技能代码 using UnityEngine; using System.Collections; public class AI : MonoBehaviour { private Hashtable table; void Start() { table = new Hashtable(); } void Update() { } //离开碰撞 void OnTriggerExit(Collider other) { //如果消失 if (other.transform.name =…
呼叫事件图形结构如下 蓝色代表 警察局 红色代表警察 黄色代表 死亡人 蓝色球代表呼救人 黑色代表 敌人 警察目标是 攻击 黑色人,但 路中 会碰到 黄色人,如果警察有 救人功能 则会先救人去医院再看 是否 还有敌人攻击.如果没救人技能 则 按照默认打 黑色人 我设计的 思路是,先由 PeopleManager中的 人物求救,当然 这图只有警察,应该会有 其他求救者.然后 SendMessageUpwards 给 最上层 PoolManager 类,告诉他 需要 救人还是需要救火 或打人 或等等…
链接:http://pan.baidu.com/s/1c0AM3g0 密码:uccw 今天补充 创建物体 移动物体 ,当点击创建后 ,会出来一个 上图的 ui,他跟随 物体,当你把物体拖动到 指定的地方,可以按 勾,也可以按× 取消他.物体间 碰撞 会返回原地.代码自己看吧,都是之前 讲到的 一些技术,下一篇 继续 补充代码.…
绑定下,用来释放内存 布局框架.链接:http://pan.baidu.com/s/1eQzSXZO 密码:25ir 这次 我采用 ngui 来设定界面.除工具栏模块外,其他各类ui模块都是 内存池动态加载的,这也避免了模块太多导致内存大问题. 每个模块 数据显示 都在单例中取得,尽可能不利用派发方式 影响效率. 同时 程序每个模块的 关联,尽可能以引用方式,不采取 find等 效率很差的做法. 同时主类负责收发,最大化降低耦合性. unity开发 不像其他语言开发 那么抽象,需要程序员 设计…
碰撞检测 //逗留碰撞 void OnTriggerStay (Collider other) { if (other.transform.name == name) { //检测距离 //根据距离 发射子弹, } } private bool peng = false;//和目标物体发生碰撞没有 private string name;//目标 //进入碰撞 void OnTriggerEnter (Collider other) { table.Add (other.transform.na…