第一个问题比较好解决,只要把人物的碰撞改成胶囊形就可以了。
至于之后的判定框,我前阵子也有试着写过一个2d格斗的框架,我的处理方式是自己写一个简单的判定框类,他有两个子类,受击框和攻击框,只能能调整位置和长款不能旋转,只能检测重叠不能物理模拟,但我想格斗游戏的判定框只要有这两个功能就够了,用unity自带的collider会有些浪费。
之后我写了hit类和move类,每一个攻击(也就是move)都由几个hit组成,每个hit里面都储存一个受击框的数组和攻击框的数组,和这个hit的持续时间,每当角色释放一个招数时,就在协程里自动地替换角色身上的受击框和攻击框。
我觉得我这种处理方式还算不错,但是也有很大的问题,就是不方便在动画面版里编辑每个动作的判定框,只能用我自己写的一个小工具来编辑,很不直观很不方便。