Design patterns 典型的物理引擎使兔子跳跃成为可能?

Design patterns 典型的物理引擎使兔子跳跃成为可能?,design-patterns,game-physics,Design Patterns,Game Physics,我很好奇是否有人能从编程的角度向我解释是什么让兔子跳跃成为可能。物理引擎使用了哪些技术、捷径或方法,这些技术、捷径或方法似乎普遍导致兔子跳跃在游戏中成为可能,除非以某种方式被特别阻止 谢谢 假设你提到像超级马里奥这样的2D游戏: 分别处理x轴和y轴,并使用一个摩擦变量 hop() { xSpeed *= friction; ySpeed *= -friction; } move() { x += xSpeed; y += ySpeed; } hop() 分别处

我很好奇是否有人能从编程的角度向我解释是什么让兔子跳跃成为可能。物理引擎使用了哪些技术、捷径或方法,这些技术、捷径或方法似乎普遍导致兔子跳跃在游戏中成为可能,除非以某种方式被特别阻止


谢谢

假设你提到像超级马里奥这样的2D游戏:

分别处理x轴和y轴,并使用一个摩擦变量

hop() {
    xSpeed *= friction;
    ySpeed *= -friction;
}

move() {
    x += xSpeed;
    y += ySpeed;
}

hop()

分别处理x轴和y轴,并使用一个摩擦变量

hop() {
    xSpeed *= friction;
    ySpeed *= -friction;
}

move() {
    x += xSpeed;
    y += ySpeed;
}

hop()
应该在每次你撞到水平墙时调用,
move()
每帧。

Spencer-我假设你在谈论一个事实,在许多游戏中,当你开始跳兔子时,它会加快速度/动量。我之所以这样认为是因为这是一个我经常听到的被称为“兔子跳”的角落案例,而不是简单地一遍遍地跳

在兔子跳跃加速的事件中,可能有几个原因,而效果只需要一个原因——一些物理引擎会在突然停止时(因为你重新接触表面)转换下降的向前+向下角度在一些额外的前进速度-可能高于或超过通常的最大速度

在某些情况下,速度不会改变,但在向下的动量过程中速度是无上限的,这意味着如果你在斜坡上跳兔子,你可以超过你的最大正常速度,然后游戏允许你在此后的短时间内继续保持该速度

还有一些情况下,跳跃的推力包括额外的前进速度——实际上,“跳跃”不仅仅是增加向上的方向(将你从地面上抬起来),而是向前和向上

或者任何数量的这些都可以发挥作用

最后,对于那些越玩越快的兔子跳跃游戏,物理引擎会意识到你已经超过了速度限制,但它不会设置一个硬的上限,而是应用一个减速力来将你减速到极限-然而,当你在空中飞行时,大多数引擎都不会施加这种力,这就是为什么如果你错过了跳跃,你的速度会很快停止,但是如果你只是继续跳跃,速度会继续疯狂


希望这是你想要的描述性答案。如果你想要别的东西,请告诉我。

斯宾塞-我想你说的是,在许多游戏中,当你开始跳兔子时,它会加快速度/动量。我之所以这样认为是因为这是一个我经常听到的被称为“兔子跳”的角落案例,而不是简单地一遍遍地跳

在兔子跳跃加速的事件中,可能有几个原因,而效果只需要一个原因——一些物理引擎会在突然停止时(因为你重新接触表面)转换下降的向前+向下角度在一些额外的前进速度-可能高于或超过通常的最大速度

在某些情况下,速度不会改变,但在向下的动量过程中速度是无上限的,这意味着如果你在斜坡上跳兔子,你可以超过你的最大正常速度,然后游戏允许你在此后的短时间内继续保持该速度

还有一些情况下,跳跃的推力包括额外的前进速度——实际上,“跳跃”不仅仅是增加向上的方向(将你从地面上抬起来),而是向前和向上

或者任何数量的这些都可以发挥作用

最后,对于那些越玩越快的兔子跳跃游戏,物理引擎会意识到你已经超过了速度限制,但它不会设置一个硬的上限,而是应用一个减速力来将你减速到极限-然而,当你在空中飞行时,大多数引擎都不会施加这种力,这就是为什么如果你错过了跳跃,你的速度会很快停止,但是如果你只是继续跳跃,速度会继续疯狂


希望这是你想要的描述性答案。如果你想要别的东西,请告诉我。

我想这很好地解释了这一点。谢谢我认为这很好地解释了这一点。谢谢