c# - 按住 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
?谢谢你。
解决方案
您可以通过执行以下操作轻松解决此问题:
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;
推荐阅读
- javascript - prevent form submission if form fields are not filled
- angular - 在第三个服务角度 4 中注入两个服务
- postgresql - 是否也在 WSL 中使用安装在 Windows 中的 PostgreSQL?
- eclipse - PyDev 不会自动完成我导入的模块
- python - 为循环中的列打印 value_counts
- go - 如何在gorm中获取结构(结构内部)值
- instagram - 使用 Instagram 的 Watson Assistant
- python - (Python 2.7) 获取 UI 标题栏大小
- i18next - 如何在 i18next 中加载带前缀的 json 文件?
- magnolia - 如何查找所有公共实例的 url Magnolia CMS