tps(第三人称射击游戏) 3.敌人&简单AI
2017-11-19 22:25
423 查看
NavMeshAgent m_agent; m_agent = gameObject.GetComponent<NavMeshAgent>();
首先初始化一个NavMeshAgent组件
void FindTarget() { m_agent.SetDestination(m_player.my_transform.position); float speed = m_moveSpeed * Time.deltaTime; m_agent.Move(m_transform.TransformDirection(new Vector3(0, 0, speed))); }
让敌人寻找角色的位置并移动
if(!m_anim.isPlaying) FindTarget(); if (Vector3.Distance(m_transform.position, m_player.my_transform.position)<=atkdis) { m_agent.SetDestination(m_transform.position); Atk(); }
如果敌人的攻击动画不在播放即在走路就寻找角色,如果角色的位置在攻击距离之内,就停止寻路(把寻路目标设为自己),并攻击;
void Atk() { m_anim.Play("zombie_atk"); Invoke("AtkJudge", 1f); Invoke("StopAtk", 2f); }
调用攻击函数,播放攻击动画,并延时1s对还在敌人攻击范围内的角色造成伤害, 攻击动画持续2s后停止。
void AtkJudge() { if (IsInArea()) { m_player.SendMessage("ApplyDamage", 10); m_player.transform.position += m_transform.forward * atkback_dis; } }
如果角色在攻击范围内就收到伤害,sendmessage给角色控制的脚本中的ApplyDamage 函数
并且击退主角。
void StopAtk() { m_anim.Stop(); FindTarget(); }
停止攻击后,停止播放动画,并重新寻找角色的位置。
bool IsInArea() { float angle = Vector3.Angle(m_transform.forward,m_player.transform.position-m_transform.position); if (Vector3.Distance(m_transform.position, m_player.my_transform.position) <= damagedis&&angle<=60) { return true; } else return false; }
判断角色是否在攻击范围内,angle为角色与敌人的角度,只要角度与距离均满足,角色就在攻击范围中。
注意:NavMeshAgent只有地形被烘培过才能使用(window-》navigation-》bake)bake后地面呈蓝色
而且需要把NavMeshAgent组件调整好,罩住需要寻路的部分,不然只有一个脑袋在地上找人。
相关文章推荐
- tps(第三人称射击游戏) 2.人物基础运动
- 《MFC游戏开发》笔记九 游戏中的碰撞判定初步&怪物运动简单AI
- 《MFC游戏开发》笔记九 游戏中的碰撞判定初步&怪物运动简单AI
- 《MFC游戏开发》笔记九 游戏中的碰撞判定初步&怪物运动简单AI
- 如何用cocos2d-x来开发简单的Uphone游戏:(三) 射击子弹 & 碰撞检测
- tps(第三人称射击游戏) 4.角色射击
- 《MFC游戏开发》笔记九 游戏中的碰撞判定初步&怪物运动简单AI
- Cocos3.4 横版游戏制作-《KillBear》-添加敌人+简单AI实现
- 如何用cocos2d-x来开发简单的Uphone游戏:(三) 射击子弹 & 碰撞检测
- tps(第三人称射击游戏) 1.相机
- [Unity&多人游戏插件]GameSparks 的下载 安装以及简单的说明
- <cocos2d-x for window phone>一个简单的打地鼠游戏
- 爱学习,爱编程,爱咖啡可乐 爱挑战,爱钻研,爱打游戏 爱晚起,也爱工作到深夜 我擅长技术,崇尚简单和懒惰 我神秘而孤僻,沉默而爱憎分明 Don't Panic! I'm a programmer
- Unity官方第一人称射击游戏<恶魔射手>_学习笔记三(敌人脚本)
- 开源3D&2D游戏开发引擎之GoDot简单介绍(一)
- 慕课英雄第三人称射击游戏创作笔记
- unity3d学习(三)制作敌人简单AI和发射火球
- Libgdx Developer's Guide(Libgdx开发者手册)-9(一个简单的游戏2--扩展示例游戏)
- 一款简单射击游戏IOS源码
- 【Unity3D游戏开发学习笔记】(七)上帝之眼—第三人称摄像机的简单实现(跟随视角,自由视角)