利用方向判断来进行移动,方向判断是利用了左右按键的操作判断,输出正负符号,通过轴的变化,让角色产生前后移动的效果。
利用移动值控制进行移动,则是控制一个变量的大小,让其增加或减小,产生正负符号和移动量,影响轴的数值大小,使角色产生前后移动的效果。
1.用变量代替轴数值
在Create中设一个变量给一个起始值。
在原来利用x轴来改变移动位置的方法上,用这个变量把x替换掉。
再让变量影响轴变化。
这样就可以让角色移动了。
其实这么写已经结合了
角色移动——移动惯性效果,移动的加速
https://indienova.com/home/blogread/4081
加速移动的方法进去,让操作的时候加上了一个变速位移,让角色慢慢加速。
2.控制速度最大值
现在一直按方向键会无限制加速,所以我们需要限制一下角色移动的最大速度和最小速度。
3.控制不按键时的状态
限制了最大速度和最小速度后,还有松开按键时,角色还在移动的问题。
【GMS2】角色移动——利用方向判断来进行移动
https://indienova.com/home/blogread/4064
之前的篇章里说到,除了左右移动的判断以外,还需要判断松开手和两个键一起按的问题。
但这里有点不一样,我们是用变量控制,这里要考虑的是默认状态和按键状态。
变量默认是0,按键后产生数值,使角色移动。
但还缺少回归默认的功能。
这里就得多加一个判断,当左右键都不按的时候速度变成0。
这样的话,当松开两个键的时候,角色就会马上停下来。
这样的话,就用了另一种方法来控制移动了。
4.移动优化——线性减速
已经做了起步加速了,既然要做惯性效果,那移动减速自然少不了。
现在的效果里,当我们松开手的时候角色就马上停下来了,我们需要角色可以减速停下,那我们可以再加一个lerp()函数。
lerp()是一个可以让一个值以某个百分比变成另一个值的函数。
具体格式 lerp(a, b, amt)
a是你输入的数值;
b是你希望变量变成的值;
amt是变化的比率;
然后把速度直接变成0,改成以20%的比率从原来的速度变为0。
这样就可以做到减速停下的效果了。
运用到lerp()函数到按键操作里也是可以的,把限制数值最大最小值的效果也包含进去。
这样就能做到平滑的加速减速效果了。
大侠更了不少,在下佩服!贡献良多啊!