TPS射击游戏--动画状态机的一些知识总结

动画状态机结构

动画状态机第一层--BaseLayer

先说状态机结构,分为两层,第一层主要是移动相关的动作和一些独立的动作(这些动作不会被上面一层的动作override)
image.png

进入Strolling子状态机,我们可以看到Locomotion和AimMovement,其中Locomotion是主角没有在射击时的动作,而AimMovement则是射击的时候的位移
image.png

进入Locomotion,我们可以看到它是由多个Blend Tree组合而成的
image.png

接着看,在射击的Blend Tree里面,其实就是八个方向的动作;因为在射击的时候,摄像机接管我们的朝向,所以脚步的移动需要用到八方向组合而成。
image.pngimage.png

第二层--AimAndShoot

这一层是用了Avatar Mask,主要的目的是,将该层的动作的部分(这里是手臂)叠加到上一层BaseLayer中去,这样我们在idle的时候射击和跑步时射击就不用每种情况都做,只需要去手臂上的动作融合上去就可以。在AvatarMask上可以这样设置:
image.pngimage.png

我们再看状态机的结构,
image.png
第二层如果没有玩家操作的话,默认是不会有任何行为叠加在第一层的,因此我们也只要处理玩家操作的时候动画的走向就可以了,比如瞄准的时候,根据武器的编号,进入到不同的某组的这几个动作中。

值得注意的是,这里的动作要和上面的AimWalk可以叠加,因此在根骨骼的设置(可能用词不准,但是意思是根骨骼会影响主角躯干姿势造型,比如是弓着腰还是挺着腰等)上近似,比如下面这两张图,左边是持枪射击时的工作,右边是AimWalk八方向中向前走的姿势,可以看到,持枪射击动作和这个向前走的动作根骨骼的设置一样,原则上我们制作的时候应该也是让动画师在八方向的身体造型基础上制作开枪动画。
image.pngimage.png

和武器相关的动画资源

Locomotion

没有武器时

  • Idle
  • Walk
  • Run

对于一把武器,需要(因此有N把武器,就 * N):

  • 持枪的Idle
  • 持枪的Walk
  • 持枪的Run

AimWalk

AimWalk主要是八方向瞄准射击位移,因此我们这里只关注腿部和身体动作(手部不用做)

  • 举枪不动时Idle
  • 举枪向前
  • 举枪向后
  • 举枪向左
  • 举枪向右
  • 举枪左上
  • 举枪右上
  • 举枪左下
  • 举枪右下

AimAndShoot

对于一把武器,需要(因此有N把武器,就 * N):

  • 拔枪(持枪到开火):AimStart
  • 开火:GunFire
  • 放下枪(开火到持枪):AimEnd
  • 换弹:Reload

当然这只是实现TPS主角行为动画中的其中一种,我在这里也只给出了基本的行为逻辑。如果更复杂功能(比如急停、转向灯),可以在上面添加更多的动作或者更多的过渡关系。当然,针对不同的项目有不同的做法,还是要根据具体的项目来做不同的策略改变。

posted @   LemonInCup  阅读(367)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示