1.设置 input
进入 Project Settings,点击input->axes, 很多列出来的axes和按键都是重复的,第一组用于用于键盘控制,第二组用于游戏控制器,默认设置与xbox手柄配合的不错。
右键单击第二组 horizontal 和vertical,duplicate 复制这两组,单独配置各项。如下图:
注意:axes和按键的设置界面在mac和win10 系统的界面是不同的。
如果你用的是win10,把刚才复制出来的多的那一组配置分别按照如下图中的设置:
如果你是mac电脑,按下图设置:
然后关闭这个setting窗口。
2. 相关scene中的设置:
在物体中新建player controller脚本:
声明一下参数:
public float runSpeed = 10f;
public float jumpForce = 5f;
public Rigidbody rigidbody;
private vector3 movement =new vector3();
有两种方法可以得到input轴的值:GetAxis和 GetAxisRaw
GetAxis:执行筛选和平滑数据
GetAxisRaw:返回确切值
使用getaxisraw可以让输入相应更快但不精准,getaxis可以更流畅但是响应速度较低。我理解的是getaxis可以精确获得线性值。
然后在fixedupdate中编写脚本:
movement.x = runSpeed * Input.GetAxisRaw("Horizontal")
movement.z = runSpeed * Input.GetAxisRaw("Vertical")
rigidbody.MovePosition(rigidbody.position+movement * Time.fixedDeltaTime);
if (Input.GetButtonDown("Jump")) rigidbody.velocity = Vector3.up * jumpForce
以上是来自unity learn官网的教程我以我的理解翻译的,我自己试了一下配置xbox 手柄,没太明白为什么要配置horizon和vertical ,以及为什么要设置成6th axis和7th axis 。因为默认的多出来的那组就可以给xbox用的。希望懂的大佬给指明一下谢谢!
不过试了一下多出来的那组horizon和vertical默认是左摇杆的,为了实现右摇杆可以实现鼠标的转向,我把mousexy 各多复制了一份,设置如下,可以实现鼠标的转向,如下图,这样就可以fps那样操纵人物移动了,左摇杆我用的默认的多出来的那组horizon和vertical。