【发布时间】:2017-08-07 20:08:24
【问题描述】:
以前有人问过这个问题,但没有一个答案能解决我的问题,因为问题总是略有不同。
我有一个在空格键上跳下来的角色。我希望它在按下空格键的时间更长时跳跃更高,最大跳跃高度是正常跳跃高度的两倍。
这是我到目前为止的想法:
void FixedUpdate () {
if (Input.GetKeyDown(KeyCode.Space) && myRB.velocity.y == 0)
{
timeHeld = 1;
}
if (Input.GetKey(KeyCode.Space) && myRB.velocity.y == 0)
{
myRB.AddForce(Vector3.up * 20,ForceMode2D.Impulse);
timeHeld += Time.deltaTime;
myRB.mass = myRB.mass - timeHeld/10;
}
if (Input.GetKeyUp(KeyCode.Space))
{
myRB.mass = 1;
}
}
由于跳跃必须发生在 keydown(而不是 keyup)上,我无法增加跳跃时添加的力,因为力已经应用于 keydown。因此,我正在考虑降低刚体的质量。
如果我继续按住空格键,上面的代码“有效”:角色跳跃(最小高度)、着陆、再次跳跃但现在有点高,等等。但这显然不是我想要的。
【问题讨论】:
-
为你想要什么语言的答案添加标签或无关紧要?
-
感谢您的建议。添加了 c# 标签。
-
你不应该将其视为跳跃,因为它不是跳跃,它在一定范围内推动某物。角色上升的应用速度是恒定的还是可变的?
-
换句话说,如果空格键保持更长时间,您是否希望跳跃更快?
-
字符中的变量应该向上减速,然后再次加速向下。但是如果按住空格键的时间更长,跳跃应该会更快。