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

  • 相关阅读:
    链串
    一个外行谈行业应用的营销问题
    SharePoint 2013的100个新功能之场管理
    Deep Learning and Shallow Learning
    [IOS]UIWebView 请求网络页面或者加载本地资源页面
    九度OJ 打印日期 (模拟)
    STM32学习之路-SysTick的应用(时间延迟)
    box-shadow
    让算法会说话之高速排序
    A5-1和DES两个加密算法的学习
  • 原文地址:https://www.cnblogs.com/softimagewht/p/2114334.html
Copyright © 2011-2022 走看看