为了让战斗更有趣一些,增加了一个武器掉落功能。在战斗时,如果角色被击倒,有35%概率会弄丢自己手里的武器。这个功能看起来挺简单,但实际做起来相当麻烦。
首先考虑的是武器掉落时的表现,武器要掉落得好看一些,肯定是需要用类似弹飞,在空中旋转,最后插到地上的这一套流程。这就包含了至少两个动画,空中旋转和落地。
其中rota为默认动画,这样在生成对象的时候就会立即开始旋转,而shake则是武器落到地上一瞬间的抖动。武器从生成到落地,使用了dotween来绘制落地曲线,尝试了各种什么inout的曲线,最后发现直接用liner是最合适了。最后为了提高表现力,还需要为这两个动画增加特效,最后的结果如下图。
之后是做武器拾取功能,这里遇到了一些麻烦,因为角色的动画是在一开始根据武器进行设置的,所以为了防止在武器变动时人物动画出现奇怪的想象,需要在武器变更逻辑后再设置动画,最终效果如下图。
到此在表现上弄得差不多了,真正麻烦的是数据逻辑。首先武器的变动需要让角色的属性跟着变动,例如,如果玩家拿着武器攻击力是15,丢了武器剩下的攻击力应该是5,扣除了武器提供的武器,因为之前角色对象的属性是保存在一个抽象类的,为了防止战斗中的属性变化影响到抽象类,进而影响到外部沙盒世界属性,所以需要在战斗时copy一份角色属性赋予对象。并且对象上增加对应的接口。
最后运行游戏,把流程跑一下,就ok啦。当然,这里只展示了双手武器的掉落,至于其他的单手武器,长柄武器之类的,只需要调整一下动画表现方式,增加对应的预制就ok啦
暂无关于此日志的评论。