按键模拟手柄输入:插值和映射

我们知道,对于手柄来说,摇杆的推动有轻有重,我们用摇杆操纵人物移动往往有一个过渡的过程。但是对于键盘来说,按键的按下只有0和1两种可能,没有轻按重按之分,如果让人物的移动由按键的按下与否控制,那从站立到移动的过程是十分突兀的。于是我们试图用键盘来模拟手柄的信号输入:

如图,箭头反向表示为正。假设我们用wasd来控制前左后右,同一条轴上的两个按键信号用加法进行合成,能得到1,0,-1这三种值。这中间没有任何过渡,所以我们希望使用一些插值的方法,让信号平滑过渡:

这样一来,信号就能平滑的过渡了。但是这里又有另外一个问题:手柄每一个方向的最大信号大小都是一样的,我们设为1 ,但是在键盘的信号,如果我们同时按住w和d,两个信号经过合成后,大小为√2,如果我们用信号大小乘以速度作为人物实际的移动速度的话,显然在这种情况下速度是过大的。于是我们需要一种方法,把我们在正方形范围内的信号映射成圆形的范围,具体公式如下:

恭喜,现在我们已经成功用键盘模拟了手柄信号的过渡效果

發表留言

使用 WordPress.com 設計專業網站
立即開始使用