前言:
记录一点最近在做手柄适配问题的踩坑。
这里推荐一款Unity做手柄适配的插件->Rewired
Rewired官方文档链接Rewired Documentation | Supported Controllers
Rewired插件里面有个是Player类,这个类获取到当前玩家的输入设备,输入的值等。
我用Player.GetAxisRaw和Player.GetAxis发现对手柄而言,这两个API得到的结果都一样,只是在键盘处理上不同,结果如下
区别:
PS5手柄摇杆灵敏区间值
假设图中的圆代表手柄的摇杆,索尼手柄摇杆的灵敏度严格按照圆的方程即,包括圆内的任意一点。
XBOX和SWITCH摇杆灵敏区间值
XBox手柄和SWITCH手柄并不按照圆的方程。假设划动区域在红色画线区域,即与X轴正半轴夹角45°以内时,摇杆在区间(0,0.5)滑动时X的值会在(0,1)进行插值,Y的值是在(-1,1)上插值,但摇杆在区间(0.5,1]滑动时X的值始终保持1,Y的值是在(-1,1)上插值。
同理假设划动区域在蓝色画线区域,即与Y轴正半轴夹角45°以内时,摇杆在区间(0,0.5)滑动时Y的值会在(0,1)进行插值,X的值是在(-1,1)上插值,但摇杆在区间(0.5,1]滑动时Y的值始终保持1,X的值是在(-1,1)上插值。