问题描述
我正在为播放器编写C#脚本,该脚本使用WASD键移动。我的脚本在下面。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerAction : MonoBehavIoUr
{
public Rigidbody rigid;
public float horizontal;
public float vertical;
public float rate = 30.5f;
// Start is called before the first frame update
void Start()
{
rigid = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update()
{
horizontal = Input.GetAxis("Horizontal");
vertical = Input.GetAxis("Vertical");
Vector3 direction = new Vector3(horizontal,0.0f,vertical);
rigid.AddForce(direction * rate);
}
}
我的代码完全没有问题,但是,我只想知道WASD密钥已经实现了 。有人可以解释一下吗?
解决方法
Unity的输入通过 Input Manager 进行控制(编辑->项目设置,然后选择“输入”类别)。
输入管理器使用以下类型的控件:
- 键是指物理键盘上的任何键,例如W,Shift或 空格键。 按钮是指物理控制器上的任何按钮(例如游戏手柄),例如Xbox One上的X按钮 控制器
Input.GetKey("Jump") {...};
- 虚拟轴(复数:轴)被映射到控件,例如 按钮或按键。当用户激活控件时,轴将在 [-1..1]的范围。您可以在脚本中使用此值
horizontal = Input.GetAxis("Horizontal");
您的代码行引用在输入管理器中定义的名称为“ Horizontal”的 Axis 。该轴本身实现了正按钮和负按钮。在这种情况下,您可以从代码中间接获取输入的A / D。