Infinite V2 Release Note

Infinite V2 Release Note
游戏地址


玩法说明

- WASD 控制角色移动
- 按下J键 进入攻击模式(WASD 可以继续移动)

更新内容

- 完成角色锁定目标后边移动边攻击

开发心得


状态机的设计

最初的设计很乱, 每个状态的切入切出都是靠一个Boolean值控制的, 比如 isRun,isAttack,isSkillAttack 等等.
当由A状态切换到B状态时候, 需要将除了控制A状态的Boolean都设置为False,仅将A状态设置为True.

参考了一些视频教程,发现用一个int值做这种互斥的设计会非常好,并且可以灵活的运用 Entry 和 Exit State. 将状态机设计的更清晰
同时 使用Sub-State 将Idel和Run放在下一层, 整体更加整洁.
并且对于后期增加或减少新的状态 很方便. 总之好处多多吧. 

Infinite V2 Release Note
 Infinite V2 Release Note
 

脚部动画制作

脚部动画使用的是2D的BlendTree, 用两个参数(垂直和水平) 去控制腿部使用哪个动画
Infinite V2 Release Note
当角色正好向前看时候, 可以直接将input的Vertical和Horizontal 值作为BlendTree的参数传入即可
Infinite V2 Release Note
但是当角色需要面向方块时候, Input传入的值是世界坐标(黄色箭头), 需要把这个值转换到角色的局部坐标系下(红色坐标).从而算出 水平和垂直方向的 分量来.
 Infinite V2 Release Note

将问题数学化,且改变为一个方便计算的样式

o点为角色所在位置,红色圆圈为单位圆.
角色朝向方块,与单位圆相交的一点为A,
玩家只是右移键,所以世界坐标系下移动方向和单位圆相交一点为B
Infinite V2 Release Note
向量A'O 为 移动方向在 角色局部坐标系下 Z轴方向投影,
向量BA' 为 移动方向在 角色局部坐标系下 X轴方向投影,

对于向量A'O的 求解 可以简化为 : 求某向量A 在向量B上的投影, 具体的数学公式 可参照 这个帖子
而一旦求解出A'O 以后 对于BA'的求解 就变得简单了 BA' = BO-A'O  (向量的加减法)

因为已经是单位向量了, 所以直接将结果作为BlendTree的参数 传入即可.

 



上一篇:Trouble shooting(问题解决):centos 7 gnome show someting has gone wrong.


下一篇:Android 应用程序启动过程源代码分析