您好,欢迎来到Unity之家!   unity.jb51.net 
  • 首 页
  • 你问我答
  • 当前位置:首页 > 程序开发 > 代码编程 >
    简单的AI模式
    时间:2015-02-27 10:56 来源:互联网 作者:网络 浏览:收藏 挑错 推荐 打印

    简单的AI模式,4种模式:站立、行走、奔跑、暂停

    定义下敌人的4种模式:

    1. //敌人站立状态

    2. public const int ENEMY_STAND = 0;

    3. //敌人行走状态

    4. public const int ENEMY_WALK = 1;

    5. //敌人奔跑状态

    6. public const int ENEMY_RUN = 2;

    7. //敌人暂停状态

    8. public const int ENEMY_PAUSE = 3;


    记录敌人的状态:

    1. private int enemyState;


    备份敌人暂停思考的时间:

    1. private float backUptime;


    敌人思考下一次行为的世间,我们设置为1

    1. public const int AI_THINK_TIME = 1;


    初始化敌人状态为站立状态:

    1. enemyState = ENEMY_STAND;


    开始执行AI,敌人进行漫游,思考状态:

    1. //计算敌人思考时间

    2. if(Time.time - backUptime >= AI_THINK_TIME) 

    3. {

    4. //敌人开始思考

    5. backUptime = Time.time;

    6. //取得0---2之间的随机数

    7. int rand = Random.Range(0,2);

    8. if(rand == 0)

    9. {

    10. //敌人进入站立状态

    11. enemyState = ENEMY_STAND;

    12. }

    13. else if(rand == 1)

    14. {

    15. //敌人进入行走状态,以及随机旋转角度

    16. Quaternion rotate = Quaternion.Euler(0,Random.Range(1,5) * 90,0);

    17. //1秒钟完成敌人旋转

    18. transform.rotation = Quaternion.Slerp(transform.rotation,rotate,Time.deltaTime * 1000);

    19. //播放行走动画

    20. gameObject.animation.Play("walk");

    21. enemyState = ENEMY_WALK;

    22. }

    23. }



    1. using UnityEngine;

    2. using System.Collections;

    3. public class Enemy : MonoBehaviour 

    4. {


    5. public const int ENEMY_STAND = 0;

    6. public const int ENEMY_WALK = 1;

    7. public const int ENEMY_RUN = 2;

    8. public const int ENEMY_PAUSE = 3;

    9. private int enemyState;

    10. private float backUptime;

    11. public const int AI_THINK_TIME = 1;

    12. void Start () 

    13. {

    14. enemyState = ENEMY_STAND;

    15. }


    16. void Update () 

    17. {

    18. if(Time.time - backUptime >= AI_THINK_TIME) 

    19. {

    20. backUptime = Time.time;

    21. int rand = Random.Range(0,2);

    22. if(rand == 0)

    23. {

    24. enemyState = ENEMY_STAND;

    25. }

    26. else if(rand == 1)

    27. {

    28. Quaternion rotate = Quaternion.Euler(0,Random.Range(1,5) * 90,0);

    29. transform.rotation = Quaternion.Slerp(transform.rotation,rotate,Time.deltaTime * 1000);

    30. enemyState = ENEMY_WALK;

    31. }

    32. }

    33. switch(enemyState)

    34. {

    35. case ENEMY_STAND:

    36. gameObject.animation.Play("idle"); 

    37. break;

    38. case ENEMY_WALK:

    39. gameObject.animation.Play("walk");

    40. transform.Translate(Vector3.forward * Time.deltaTime);

    41. break;

    42. }

    43. }

    44. }


    现在把这个代码拖到你的人物模型上,在运行游戏,人物就能进行漫游模式了…


    (责任编辑:雷霆风)
    免责声明:Unity之家部分内容来源于互联网,如有侵权,请联系我们,本站将立即进行处理。
    标签:Unity之家AI