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(){ }

  • 相关阅读:
    打开虚拟机导致电脑蓝屏
    jmeter访问接口后返回的数据乱码
    使用jmeter批量对新增账号初始化操作
    使用jmeter参数化时在数据中匹配11位的手机号并分组操作
    vsphere vdp备份情况导出
    grep的完全匹配(不是-w)
    win10右键新建md文件,亲测有效
    信步漫谈之Wiki知识库——搭建dokuwiki
    vim操作学习
    writev函数
  • 原文地址:https://www.cnblogs.com/softimagewht/p/2114334.html
Copyright © 2011-2022 走看看