c# - 如何在 2D 游戏中创建“冲刺”能力
问题描述
我正在尝试在具有能量条的 2d Unity (C#) 中创建一种冲刺能力,因此不能无休止地使用它。我错过了什么?
我试过让 sprint 成为一个函数,并在按下 X 键时调用它。试图乘以它的位置,但我在短距离内获得了闪烁的能力。
\\ this is my movement script, other variables we're declared earlier in the code
void Update() {
Vector2 mi = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
mv = mi.normalized * speed;
}
private void FixedUpdate() {
rb.MovePosition(rb.position + mv * Time.fixedDeltaTime);
}
我希望代码在按下 X 键时让玩家以正常速度的两倍运行,但它只能在能量没有用完时使用。
解决方案
看不到您对“能量”的实现,但我会简单地使用
public float energy;
// How much is energy reduced per second?
public float decreaseSpeed;
如果按下 x 来提高速度
private void Update()
{
Vector2 mi = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
mv = mi.normalized * speed;
if(Input.GetKey(KeyCode.X) && energy > 0)
{
// Reduce energy by decreaseSpeed per second
energy -= decreaseSpeed * Time.deltaTime;
// if needed avoid negative value
energy = Mathf.Max(0, energy);
// double the move distance
mv *= 2;
}
}
顺便说一句,建议使用Time.deltaTime
而不是Time.fixedDeltaTime
也使用 in FixedUpdate
(请参阅Time.fixedDeltaTime
)
推荐阅读
- twilio - 有人挂断电话时如何找回通话时长?
- python - 如何在我的 Django 模型中获取两个字段的乘积
- postgresql - Postgres:基于子查询授予用户
- asp.net-mvc - 谷歌环聊
- java - 创建名为“appConfig”的 bean 时出错:合并 bean 定义的后处理失败;
- kernel - 是否可以在 u-boot 期间配置 ssh?
- powershell - 如何使用 Windows 命令行减去一部分 TXT 文件?
- python - 在使用 numpy 调试浅层神经网络时需要帮助
- r - 如何将直方图插入到“geom_smooth”图中?
- python - ModuleNotFound 错误,即使 pip 已被使用