Unity3D 学习笔记(六) 手柄配置
2020-02-27 本文已影响0人
Never肥宅
手柄键位
![](https://img.haomeiwen.com/i21470277/a80e8fff59e09815.png)
Windows
![](https://img.haomeiwen.com/i21470277/0ab6de82aca9c971.png)
Mac
![](https://img.haomeiwen.com/i21470277/1058d1689aec061e.png)
Linux
设置摇杆、十字键和XYAB
Edit——> project settings ——>input
![](https://img.haomeiwen.com/i21470277/678564a9b72277e8.png)
类型设置为joystick axis
![](https://img.haomeiwen.com/i21470277/84fdf3510c97ade8.png)
axis里面有许多的轴,对照上面的xbox手柄键位图,这里的XY轴,45轴和67轴就分别对应两个摇杆和十字键
![](https://img.haomeiwen.com/i21470277/1111d16b2962855d.png)
修改Axes里面的Size可以增加轴的数量
![](https://img.haomeiwen.com/i21470277/ab541aa045dcbf1e.png)
也可以直接右键duplicate复制
![](https://img.haomeiwen.com/i21470277/314dbca91eefb14e.png)
将其改为对应的轴,然后继续添加十字键的两轴,pad意为十字键,V和H分别是Vertical和horizontal
![](https://img.haomeiwen.com/i21470277/7956d20394d4dbcb.png)
![](https://img.haomeiwen.com/i21470277/aa96be2d7057a194.png)
把xyab也对应设置完成
![](https://img.haomeiwen.com/i21470277/f2f2976f61396f56.png)
建立一个调试脚本来看看刚才的设置,其脚本为
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class JoystickTest : MonoBehaviour
{
void Update()
{
print("Y1 : "+ Input.GetAxis("Dup"));
print("X1 : "+ Input.GetAxis("Dright"));
print("Y2 : "+ Input.GetAxis("Jup"));
print("X2 : "+ Input.GetAxis("Jright"));
print("pad Y : "+ Input.GetAxis("Vpad"));
print("pad X : "+ Input.GetAxis("Hpad"));
print("X:" + Input.GetButtonDown("btnx"));
print("Y:" + Input.GetButtonDown("btny"));
print("A:" + Input.GetButtonDown("btna"));
print("B:" + Input.GetButtonDown("btnb"));
}
}
输出数据可能有点多,可以注释其他的一个一个来检查。
![](https://img.haomeiwen.com/i21470277/1ceb54ef79f9c5ee.png)
试了好几遍发现没反应,原来是手柄没插。。。。
插上手柄重新运行一次可以看到系统能检测到对应的数据输入
![](https://img.haomeiwen.com/i21470277/78547e98539b1306.png)
扳机和肩键
接下来添加扳机和肩键
继续Duplicate设置好两个肩键。
![](https://img.haomeiwen.com/i21470277/72f4e63b3b18dd23.png)
然后因为我们的xbox是线性扳机嘛那么他既然有一个模拟量的输出自然应该是个轴,根据图中我们也可以看到是轴3
因此继续duplicate
![](https://img.haomeiwen.com/i21470277/ffe714c97243d058.png)
修改一下测试脚本
print("Bumper : "+ Input.GetAxis("Bumper"));
print("LB:" + Input.GetButtonDown("LB"));
print("RB:" + Input.GetButtonDown("RB"));
![](https://img.haomeiwen.com/i21470277/c0c8a8faba65e44e.png)
可以正常运行,左扳机LB对应Input.GetAxis("Bumper")返回值为正而右扳机LB对应Input.GetAxis("Bumper")返回值为负
如果你是其他手柄这里是按键的话改成button然后测试脚本用Input.GetButtonDown()就好了
这里我测试的时候用的不是我手上的这个xboxones的手柄而是把yesojo的pro手柄接上去识别成了xbox360,所以Bumper只有-1和1而没有中间值
为啥不用xboxones的手柄呢。。。因为在家这么多天,电池没电了我也没买电池。。。
![](https://img.haomeiwen.com/i21470277/7aa3570f5f985f7d.png)