键盘输入 控制人物移动
在我们制作游戏中最常见的需求之一就是使用键盘移动游戏角色,那么我们首先需要获取键盘输入。
以下提供两种方法获取键盘。
这里尽量通过截图解释让大家理解代码的含义。
GetInput
void FixedUpdate()
{
Move();
}
private void Move()
{
if (Input.GetKey(KeyCode.W))
{
//isMove();
transform.Translate(Vector3.forward * MoveSpeed * Time.deltaTime);
}
if (Input.GetKey(KeyCode.S))
{
transform.Translate(Vector3.back * MoveSpeed * Time.deltaTime);
}
if (Input.GetKey(KeyCode.A))
{
transform.Translate(Vector3.left * MoveSpeed * Time.deltaTime);
}
if (Input.GetKey(KeyCode.D))
{
transform.Translate(Vector3.right * MoveSpeed * Time.deltaTime);
}
}
如果在3D游戏开发中有移动的动画,那么可以在Move中加入动画运行的代码
if (Input.GetKeyDown(KeyCode.W))
{
animator.SetBool("move", true);
}
if (Input.GetKeyUp(KeyCode.W))
{
animator.SetBool("move", false);
}
InputManager
请看注释
public float moveSpeed = 10;
void FixedUpdate()
{
Move();
}
public void Move()
{
float h = Input.GetAxisRaw("Horizontal");
transform.Translate(Vector3.right * h * moveSpeed * Time.fixedDeltaTime, Space.World);
//这里的GetAxisRaw 的返回值是一个数字,←键或者a键为负,→键或者d键为正
// ↑键或者w键为正,↓键或者s键为负
//所以这里是将返回值乘入移动的位置中,为负就向反方向运动。
float v = Input.GetAxisRaw("Vertical");
transform.Translate(Vector3.up * v * moveSpeed * Time.fixedDeltaTime, Space.World);
// (向上运动 *(正为上,负为反方向)*运动速度*Time.fixedDeltaTime,Space.World);
}
这里的设置是可以方便代码的编写,可以点击Unity左上角的Edio,打开Project Setting里面的Input,这里的前两个变量名就是代码中双引号里的名字,分别代表控制前后(vertical)和左右(Horizontal)的移动。
里面的left right a d 都是可以按的键,也就是说用此方法上下左右wsad都可以控制玩家移动。
注意:这里的Name必须和代码中双引号的一致,里面的一切都可以更改,根据自己的情况,除非必要无需更改。