gpt4 book ai didi

c# - 如何统一检查同时输入的 WASD 和箭头键?

转载 作者:行者123 更新时间:2023-12-02 15:48:57 25 4
gpt4 key购买 nike

我正在开发一款与 Subway Surfers 具有相似玩家机制的游戏,即玩家在用户提供相应输入时切换车道。

private void Update() {
if (Input.GetKeyDown(KeyCode.A)) {
ChangeLane(-1);
} else if (Input.GetKeyDown(KeyCode.D)) {
ChangeLane(1);
}
}

此代码段主要检查用户输入并使用 ChangeLane(int) 方法让用户切换车道,参数 -1 表示玩家切换到左侧车道,并且1 表示玩家切换到右车道。


问题:

我想在我的脚本中同时检查 WASD 键和方向键输入.
想到这里马上想到的是:

if (Input.GetKeyDown(KeyCode.A) || Input.GetKeyDown(KeyCode.LeftArrow) { ... }

我想做一些事情来检查 A 和左箭头,只有一个 if 检查,而不是像上面所示的那样分别检查。


我尝试过的:

Input.GetAxis("Horizo​​ntal"),但这在这种情况下不起作用,因为只要按下该键,该值就会递增直到 1

接下来,Input.GetAxisRaw("Horizo​​ntal"),这几乎成功了,按下键后立即返回 1

int horizontalInput = (int)Input.GetAxisRaw("Horizontal");

if (horizontalInput != 0) {
ChangeLane(horizontalInput);
}

我在输入管理器中的水平轴:
enter image description here

但是....

Input.GetAxis(string)Input.GetAxisRaw(string) 的工作方式类似于 Input.GetKey(KeyCode) 但我想要一些东西用作 Input.GetKeyDown(KeyCode)


PS: 如果您的回答不包括在按下按钮后使用 boolean 标志跳过帧,我将不胜感激。

最佳答案

团结 InputManager允许您为轴上的正负按钮指定主键和备用键。

您可以将“水平”轴配置为使用“w”表示正值,“s”表示负值,“向上箭头”表示 alt 正值,“向下箭头”表示 alt 负值。那么你应该使用 GetAxisRaw。

使用 InputManager 允许您从代码中抽象出输入的配置。 InputManager 可以配置为使用 Controller 、赛车设置、键盘等,而无需对您的代码进行任何修改。虽然它的功能与 GetKey 相同,但它可以让您避免对按钮按下进行硬编码。

关于为什么使用 GetAxisRaw 的旁注:GetAxis 使输入平滑,这就是它需要一些时间才能达到 1 或 -1 的原因。 GetAxisRaw 提供即时输入。

看来您实际上并不希望 WASD/arrow 持续控制您的角色,而是想要冲动控制。换句话说,您不希望长时间按下按钮进一步影响角色的移动。相反,请考虑使用 GetButtonDown并在您的 InputManager 中适本地定义按钮。

关于c# - 如何统一检查同时输入的 WASD 和箭头键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73210056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com