首先我们定一下不同速度对应的行人动作状态,设计为四种状态:
- 静止站立Stand:0~maxStandSpeed
- 走路Walk:minWalkSpeed~maxWalkSpeed
- 慢跑Jog:minJogSpeed~maxJogSpeed
- 快跑Run:大于MinRunSpeed
我们可以使用Animator组件实现行人的不同动画,可以设计为如下行人动画状态机:
并通过速度做动画的切换,其中Animator有一个方便之处是不同动画之间切换的过渡是可以通过Transitions来实现,这样动画之间切换就不会突兀。
此外,在Walk, Jog, Run这三个动画中,还可以根据行人速度调整动画自身的速度Speed。在Unity editor中动画速度在如下图中调整(默认为1),也可以代码动态调整。
然后我们将行人的速度映射为动画的速度,可以采用归一化映射方法:
映射公式如下:
y=ymin+ymax−yminxmax−xmin∗(x−xmin)y = y_{min} + \frac{y_{max} - y_{min}}{x_{max} - x_{min}} * (x - x_{min})y=ymin+