当前位置: 首页 > news >正文

怎么制作网站后台建设网站费用记入什么科目

怎么制作网站后台,建设网站费用记入什么科目,谁用fun域名做网站了,不同网站相似的页面百度收录吗文章目录 前言一、状态机二、应用1、场景切换2、人物行为切换3、宝箱、机关切换4、AI 三、人物行为总结 前言 提到Unity状态机,接触不久的开发者会想到Unity的动画状态机,而对于老油条来说,可能会回忆起自己实现的动画状态机。当然&#xff…

文章目录

  • 前言
  • 一、状态机
  • 二、应用
    • 1、场景切换
    • 2、人物行为切换
    • 3、宝箱、机关切换
    • 4、AI
  • 三、人物行为
  • 总结


前言

提到Unity状态机,接触不久的开发者会想到Unity的动画状态机,而对于老油条来说,可能会回忆起自己实现的动画状态机。当然,常见的框架设计中都会出现属于自己的状态机接口,之前一篇文章也提到了一种FSM的写法。
状态机是分为有限状态机和无限状态机,而Unity开发的基本上都是有限状态机(FSM),无限状态机主要是在编译原理中可能用到,基本上属于概念向的东西,所以本篇主要介绍有限状态机(FSM)的使用。


一、状态机

相信大家都用过Unity的动画状态机,也就是Animator。我们知道一种状态在不同的条件下可以跳转到不同的状态中去,每个状态要转移到其他状态都必须满足它们之间的连线条件,而且状态与状态之间不一定有连线,因为两种状态之间有可能是不允许转换的。

状态机可归纳为4个要素,即现态、条件、动作、次态。这样的归纳主要是出于对状态机内在因果关系的考虑。“现态”和“条件”是因,“动作”和“次态”是果。详解如下。
·现态:是指当前所处的状态。 ·条件:又称“事件”,当一个条件被满足时,将会触发一个动作,或者执行一次状态的迁移。
·动作:条件满足后执行的动作。动作执行完毕后,既可以迁移到新的状态,也可以仍旧保持原状态。动作不是必须的,在条件满足后,也可以不执行任何动作,直接迁移到新状态。
·次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”。

二、应用

1、场景切换

场景是独立的,一般来说只有一个场景展示在游戏或软件中。在玩游戏的时候我们都不希望有漫长的等待时间,通常会进入登陆页面,对应的就是登陆场景;在进入游戏主场景就会销毁登陆页面的UI、模型等,在主场景生成游戏内容,这些操作我们需要统一在场景管理模块处理。

2、人物行为切换

人物通常只有一种状态,如:走、跑、跳等,如果想在跑步途中吃东西、挥舞武器则需要在跑步动作中加参数,根据传参的不同执行不同跑步动画。

3、宝箱、机关切换

宝箱、机关的状态可以看作独立的状态,即不是开就是关,对应的动画同理。

4、AI

敌人的AI根据游戏的不同,会用行为树或状态机实现。游戏中守卫在巡逻过程中,发现敌人就会追击并攻击,此时守卫的状态切换到了攻击状态,距离敌人或巡逻地点太远后会返回并退出攻击状态。

三、人物行为

人物的行为可以划分为待机、走路、攻击和受伤等状态。在状态机的处理中,人物在不同状态之间进行转换,具体如下:
待机状态(Idle):人物处于静止不动的状态,循环播放"idle"动画,等待玩家输入或者外部触发事件。
走路状态(Walking):人物进行移动,可能是根据玩家输入的方向键或者自动巡逻等行为。
攻击状态(Attacking):人物进行攻击行为,可能是使用武器、释放技能等。
受伤状态(Injured):人物受到伤害,处于受伤状态下,不能进行攻击。
状态机的处理需要根据具体的游戏逻辑和需求来设计转移条件和动作,确保人物在不同状态之间的转换符合游戏规则,并且能够实现预期的游戏体验。

Class BaseState
{Public virtual void OnEnter(){}Public virtual void OnExit(){}Public virtual void Update(){}
}Class IdleState
{Public override void OnEnter(){role.playAnimation(“idle”,loop);}
}Class AttackState
{Public override void OnEnter(){Role.playAnimation(“attack”,once);}Public override void Update(){If(!Role.IsPlayingAnimation(“attack”)){AttackStateFinish();}}Public override void OnExit(){GotoIdleState();}
}
Class HurtState
{Public override void OnEnter(){role.playAnimation(“hurt”,Once);}Public override void Update(){If(!Role.IsPlayingAnimation(“hurt”)){HurtFinish();}}Public override void OnExit(){GotoIdleState();}}Class MoveState
{Public override void OnEnter(){Role.playAnimation(“walk”,loop);}Public override void Update(){Move();}Public override void OnExit(){GotoIdleState();}
}

状态机管理类的处理如下:

class RoleStateController
{private IdleState idleState;private MoveState moveState;private AttackState attackState;private HurtState hurtState;private BaseState currentState;public void OnHurt(){ReduceHP();If(currentState != hurtState){ChangeToHurtState();}}public void InputAttack(){If(currentState  == hurtState) return;   // 受伤状态下不可攻击If(currentState == attackState) return;  // 攻击状态还没结束时不可重新开始攻击ChangeToAttackState();}Public void InputMove(){}
}

书中的代码为伪代码,但我们不难理解,状态机控制类存储了各个状态,并且提供了输入的接口,但输入的事件是状态机外部提供的,可能是玩家的操作。状态机的本质就是系统行为的数学模型,通过状态、转移条件和动作来控制系统在不同状态之间的转换。代码逻辑是存储状态,再提供输入接口。
实际应用中大量的逻辑会在每个状态内部实现,如果状态很多,管理类还需要改成列表存储状态进行切换。


总结

综合而言,状态机是一种数学模型,用于描述系统在不同状态下的行为转换,通过状态、转移条件和动作来控制系统的行为。在Unity中,状态机被广泛运用于处理各种行为切换,如场景切换、人物行为切换、宝箱、机关切换以及AI行为控制等。在编写特定模块时,状态机被证明是非常有用和实用的工具。

http://www.yayakq.cn/news/480630/

相关文章:

  • 徐州做英文网站的公司军事新闻最新消息报道
  • 免费设计海报的网站博客源码wordpress
  • 建设公司网站源码为什么企业要建设网站
  • dw怎么做网站注册登入页面wordpress的标题字体
  • 前端工程师做交互网站安徽网站建设开发
  • 做暧暧免费网站惠安县道安办网站建设
  • 阿里云服务器责任怎么做网站高端网站建设公司新鸿儒
  • 网站开发 招聘wordpress 手机版插件
  • 商城网站建设课设安阳seo网站优化
  • 云南网站建设百度网页设计教程花之语
  • 衡水网站检测公司网站模板下载器
  • 网站备案有什么作用设计网站vcg
  • 怎么做网站底部版权信息益阳建站网站制作
  • 工信部网站icp备案企业营销型网站建设图片
  • 简阳网站建设设计师培训资料
  • 沈阳网站seo外包课程网站开发的研究现状
  • 装饰公司怎样做网站山东郓城住房和城乡建设厅网站
  • 掌握商务网站建设策略wordpress 内容摘要
  • 学校asp网站做优秀企业网站
  • 黄山网站建设怎么做wordpress主页设置
  • 提高网站公信力 单仁多媒体网页设计教程
  • 电商网站开发需要掌握哪些知识技能网站开发图片侵权
  • 做网站用什么语言快北京网站建设制作哪家公司好
  • 建设工程人才招聘信息网站flash网站项目背景
  • 重庆个人建站模板做网站开发钱
  • 网站制作学费多少钱申请域名的流程
  • 做动画 的 网站有哪些网页设计图片透明度怎么设置
  • 怎么给网站做logo成都html5网站设计
  • 如果制作个人网站遵义制作公司网站的公司
  • 制作个人网站的步骤网站建设人才招聘