首页 > 解决方案 > 按住 Left Shift 时提高玩家移动速度

问题描述

我的PlayerMovement.cs脚本中有这段代码:

float speed = 6f;

if (Input.GetKeyDown(KeyCode.LeftShift))
   speed = 12f;
else if (Input.GetKeyUp(KeyCode.LeftShift))
   speed = 6f;

Vector3 move = transform.right * x + transform.forward * z;
controller.Move(move * speed * Time.deltaTime);
Debug.Log("Moved with a speed of " + speed);

我只包括移动部分。它还有一些“跳转空间代码”,我不想包括在内,因为我觉得它没用。

问题是,玩家总是以6f. 12f当我按下键时,它只输出“以速度移动”。当我按3次时,我拿着钥匙走路5分钟,12f只输出3次。似乎我只收到12f了一秒钟的速度,当我按下键时,它又回到了6f。在测试游戏时甚至无法观察到“运行”速度。我需要在日志中输入它,看看它是否有效。

当玩家拿着 时,我能为玩家“奔跑”做些什么Left Shift?谢谢你。

标签: c#unity3d

解决方案


您可以通过执行以下操作轻松解决此问题:

if (Input.GetKey(KeyCode.LeftShift))
speed = 12f;
else
speed = 6f;

如果您按住按钮,它将停留在 12f,如果您松开它,它将返回到 6f

如果您想在按下一次时也更改它,您还可以执行以下操作:

if (Input.GetKey(KeyCode.LeftShift) || Input.GetKeyDown(KeyCode.LeftShift))
speed = 12f;
else if(Input.GetKeyUp(KeyCode.LeftShift))
speed = 6f;
else
speed = 6f;

推荐阅读