人物模型的运动
上一个模型太丑已经被我换掉了,现在用的是Mixamo的模型以及其配套动作,已经完成了WASD控制人物走动,鼠标点击射击,R换弹,长时间无操作环视警戒的动作。
如下图,未来会进一步完善:
关于动画,遇到的问题:
1.动画本身不是标准的,比如前走应该是沿x轴正方向的前进运动,但下载的动画是偏移的像是朝xz某个方向运动,(动画运动时模型仍面向x正,就是动画偏了,要命),后来发现在动画的Inspector面板的Animation处可调动画初始旋转角度:
2.人物走着走着飞上天了,我首先想到的就是和问题一同样的方法,把动画的Y轴偏移锁了,结果游戏人物一动就会掉出地图,我记得很早就给人物模型加上了刚体,设置了受重力影响,最后发现问题在于必须给实体模型加刚体组件,就是以下代表头和身体的Soldier_body、Soldier_head
第三人称摄像机的运动
首先是跟随人物,然后是鼠标移动摄像机方向。
难点在于摄像机转向时,人物朝向也要动,而人物朝向如果每帧机械的刷新朝向摄像机方向,就会很生硬,需要一个转向动作,这个转向动作我暂时没有。
子弹发射
完成了子弹的产生、发射和自动销毁,难点是子弹发射的瞄准。
我最后想到的一个讨巧的方法是:让子弹从摄像头处,沿摄像头方向直线运动,就能100%到达屏幕中心的远处了,因为这个方法实在是简单,就不放代码了。
如下图,屏幕中央有个准星,子弹从摄像头Main Camera处射向准星方向
弹匣设置,开一次枪子弹减一,若无子弹无法射击,R键换弹动画,并回满子弹。
子弹攻击的判定则是通过碰撞体实现,比如我的测试代码如下,被子弹攻击后销毁:
声音
设置了一个开火的声音,鼠标按下调用,在声音方面还有很多问题需要解决,首先是同一个物体如何设置多个音源,并条件判定播放A或B或C,比如开火时能听到“砰砰”,换弹时能听到换弹的声音。