以前已经问过这个问题,但没有一个答案能解决我的问题,因为问题总是稍有不同。与空格键的持续时间相关的跳跃高度
我有一个在空格键上跳转的字符。当空格键长按时,我希望它跳得更高,最大跳跃高度是正常跳跃高度的两倍。
这就是我想出了这么远:
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#标签。 – binoculars
你不应该把这看作是一个跳跃,因为它不是一个跳跃,而是在某些限制范围内推动某件事情。角色的施加速度是不断变化的还是变化的? –