Unity针对XBOX,SWITCH,PS5手柄的适配踩坑

前言:

记录一点最近在做手柄适配问题的踩坑。

这里推荐一款Unity做手柄适配的插件->Rewired

Rewired官方文档链接Rewired Documentation | Supported Controllers

Rewired插件里面有个是Player类,这个类获取到当前玩家的输入设备,输入的值等。

我用Player.GetAxisRaw和Player.GetAxis发现对手柄而言,这两个API得到的结果都一样,只是在键盘处理上不同,结果如下

区别:

PS5手柄摇杆灵敏区间值

Unity针对XBOX,SWITCH,PS5手柄的适配踩坑_第1张图片

假设图中的圆代表手柄的摇杆,索尼手柄摇杆的灵敏度严格按照圆的方程即x^{2}+y^{2}=r^{2},包括圆内的任意一点。

XBOX和SWITCH摇杆灵敏区间值

Unity针对XBOX,SWITCH,PS5手柄的适配踩坑_第2张图片

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)上插值。

你可能感兴趣的:(unity,xbox)