【Unity3D自学记录】游戏开发之怪物AI
2014-06-19 16:44
609 查看
using UnityEngine; using System.Collections; public class BoosAI : MonoBehaviour { //敌人状态 //敌人站立状态 public const int STATE_STAND = 0; //敌人行走 public const int STATE_WALK = 1; //敌人奔跑状态 public const int STATE_RUN = 2; //记录敌人的当前状态 private int enemyState; //主角对象 private GameObject hero; //备份上一次的敌人思考时间 private float backUptime; //敌人思考下一次行为的时间 public const int AI_THINK_TIME = 2; //敌人的巡逻范围 public const int AI_ATTACK_DISTANCE = 10; // Use this for initialization void Start() { //得到主角对象 hero = GameObject.Find("Cube"); //设置敌人的默认状态站立 enemyState = STATE_STAND; } // Update is called once per frame void Update() { //判断敌人与主角的距离 if (Vector3.Distance(transform.position, hero.transform.position) < (AI_ATTACK_DISTANCE)) { //敌人进入奔跑状态 gameObject.animation.Play("run"); enemyState = STATE_RUN; //设计敌人面朝主角方向 transform.LookAt(hero.transform); } //敌人进入巡逻状态 else { //计算敌人的思考时间 if (Time.time - backUptime >= AI_THINK_TIME) { //敌人开始思考 backUptime = Time.time; //取得0~2之间的随机数 int rand = Random.Range(0,2); if (rand == 0) { //敌人进入站立状态 gameObject.animation.Play("idle"); enemyState = STATE_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 = STATE_WALK; } } } switch (enemyState) { case STATE_STAND: break; case STATE_WALK: //敌人行走 transform.Translate(Vector3.forward * Time.deltaTime); break; case STATE_RUN: //敌人朝向主角奔跑 if (Vector3.Distance(transform.position, hero.transform.position) > 3) { transform.Translate(Vector3.forward * Time.deltaTime * 3); } break; } } }
相关文章推荐
- 【Unity3D自学记录】Unity3D游戏开发之跑酷游戏项目讲解
- [Unity3D]Unity3D游戏开发之怪物AI
- 【Unity3D自学记录】 Unity3D游戏开发之键盘选取、切换目标
- 使用Unity3D 自主实战开发的赛车游戏实例,关键点记录 (四)之道路监测点
- 转载 ---- 【Unity3D自学记录】代码获取隐藏游戏对象
- 【Unity3D自学记录】代码获取隐藏游戏对象
- Cocos2d-x怪物智能AI怪物也有智商----之游戏开发《赵云要格斗》(6)
- 使用Unity3D 自主实战开发的赛车游戏实例,关键点记录 (五)之实时排名系统
- 使用Unity3D 自主实战开发的赛车游戏实例,关键点记录 (一)之赛车游戏总体介绍
- 【Unity3D自学记录】Unity3D游戏开发之连续滚动背景
- 【Unity3D自学记录】Unity3D游戏开发之自由视角状态下的角色控制(一)
- 【Unity3D自学记录】Unity3D开发之原创开关小部件
- 使用Unity3D 自主实战开发的赛车游戏实例,关键点记录 (六)之自动寻路及优化
- [Unity3D]赛车游戏开发 - 计算机对手AI设计方案
- 【Unity3D自学记录】NGUI之显示2D游戏物体的名字
- Unity3D ARPG游戏开发《最初的幻想》之强化敌人AI,折腾的GUI
- 【Unity3D自学记录】Unity3D游戏开发之自由视角状态下的角色控制(二)
- Unity游戏开发 怪物巡逻AI
- Unity3D研究院之游戏开发中的人工智能AI
- 使用Unity3D 自主实战开发的赛车游戏实例,关键点记录 (三)之UI菜单制作