近期热门
粉丝7
关注 0
获赞 2
Unity3d游戏开发之怪物AI设计代码

[U3D] Unity3d游戏开发之怪物AI设计代码

[复制链接]
5469 1 0 0 8年前 举报
本帖最后由 silucgcwy 于 2016-11-10 13:47 编辑

0.jpg   本篇unity3d教程我们来学习下怪物智能AI的设计,AI简单的说就是人工智能,众所周知,在游戏中,当我们的主角在接近怪物时,怪物就要做出相应动作调整,比如怪物在发现主角进入攻击范围时,就会朝主角奔跑,然后攻击人物,而其他时间怪物动作则应该表现为空闲状态,下面我们来学习下!贴上代码!
  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;
  }
  }
  }
  好了,本篇unity教程到此结束,下篇我们再会!
  首发地址: Unity3d游戏开发之怪物AI设计代码_游戏开发_丝路教程网
  资源地址:http://blog.silucg.com/unity/1247.html(分享请保留)


0
点赞
0
打赏
0
添加到收藏夹

0

点击复制链接

使用微信扫码分享
一次扣10个券
全部评论1
您需要登录后才可以回帖 登录

感谢楼主分享,谢谢~
8年前
回复

使用道具 举报

您当前使用的浏览器IE内核版本过低会导致网站显示错误

请使用高速内核浏览器或其他浏览器