zoukankan      html  css  js  c++  java
  • 转的别人写的状态机 还没看 预留下

    //被敌人发现的距离

    var awareDistance:float=15.0f;

    //敌人受惊吓后引发动作的距离

    var scareDistance:float=10.0f;

    //玩家角色

    var player:Transform;

    //奔跑速度

    var runSpeed:float=4.0f;

    //状态机枚举 

    enum AIStatus { idel=0,scared=1};

    //状态机,初始化为闲置状态

    private var status=AIStatus.idel;

    //角色控制器

    var Controller:CharacterController;

    //移动方向

    private var moveDistance=Vector3.zero;

    //初始化函数,在Start()前被调用,整个游戏循环中只调用一次,相当于构造函数

    function Awake()

    {

    Controller=GetComponent(CharacterController);

    }
    //Loop函数

    function Update()

    { //检查状态机

    CheckStatus();

    //选择行为

    switch(status)

    {

    case AIStatus.idel:

    //闲置时动作

    Idel();

    break;

    case AIStatus.scared:

    //跑动

    Run();

    }

    }
    //检查状态机函数

    function CheckStatus(){

    //求两个点之间的距离,magnitude是sqrt((x-x1)^2+(y-y1)^2+(z-z1)^2)的值

    var dist=(player.position-transform.position).magnitude;

    //如果两个物体之间的距离小于<敌人被惊吓的距离>,那么触动受惊状态机

    if(dist < scareDistance)

    {

    status=AIStatus.scared;

    }

    //如果两个物体之间的距离大于<被敌人发现的距离>,那么触动闲置状态机

    else if(dist > awareDistance)

    {

    status=AIStatus.idel;

    }

    }

    //敌人跑动函数

    function Run(){ }

    //敌人闲置函数

    function Idel(){ }

  • 相关阅读:
    lr文件下载脚本(文件参数化重命名)
    测试部工作不受重视怎么办?
    质量管理浅谈
    测试人员职业规划
    十年软件测试经验总结
    如何管理测试项目?
    ES性能测试
    将.dat文件导入数据库
    NLPIR_Init文本分词-总是初始化失败,false,Init ICTCLAS failed!
    JavaScript-也来谈--闭包
  • 原文地址:https://www.cnblogs.com/softimagewht/p/2114334.html
Copyright © 2011-2022 走看看