此外,我还优化了之前写的移动的函数。原本的函数里面,对角色在空中移动并没有做出太多限制,然后角色在空中可以比较随意地移动。为了现在角色在空中的移动,我引入了一个机制:当角色在空中变换方向时,速度需要由0加速到一定速度。
我把加速功能独立了出来,并设置两个参数,一个MaxSpeed,一个BaseSpeed。每次由BaseSpeed通过公式加速到MaxSpeed。
我加入了一个判断是否反向的功能。在按下a或者d时,将xvel设置为-1,或者1,然后用xvel与角色x轴上的速度相乘,因为这个是只有在按下键盘时才会发生改变,此时速度还未发生变化,如果乘积<0,则说明发生了反向,否则没有发生。设置一个trig来判断,反向则true,不反向则false,当松开键盘时设置为false。
把情况分成两种,if(isOnGround),则MoveSpeed(MaxSpeed,BaseSpeed);else MoveSpeed(0.8fMaxSpeed,0.2fBaseSpeed)
作为一种惩罚机制当然不能让空中加速也能达到最高速度,是不是。
其实这个功能不难实现,不过当时搞判断反向的时候确实有点搞心态,因为网上也找不到其他贴子说这个的,只能自己慢慢摸索还有一些参数修改,怎样手感最好什么的,讲道理都是凭感觉来的,数学物理什么的早忘光了,算不来算不来。。。。