我想在 ursina 引擎中制作 bhop 机制。如果按下空格键,角色将永远跳跃,如果按下w按钮,则每次跳跃的速度都会增加。加快扫射速度也是可取的(但不是必要的)。
因此,“兔子跳跃”我假设你的意思是角色比跑步/冲刺时移动得更快,每次跳跃的速度都会增加。
速度可以在跳跃或地面移动(或两者)期间应用。根据我的经验,永远处于跳跃状态最终可能会导致问题,但我们可以说我们就是这么做的。你会得到类似的东西:
def input(self, key):
if (key == 'space')
self.position += self.forward * player.speed
self.position_y += jump_upwards_speed
在上面的示例中,根据您是否想在跳跃期间或在地面上移动得更快,player.speed值将是设定速度或乘以当前速度提升。
对于实际的兔子跳跃,您每次跳跃都要乘以当前速度。 请记住,如果您从接地开始跳跃,您只想添加乘数。
current_speed_multiplier = current_speed_multiplier + per_hop_multiplier_amount
# then update the player speed
player.speed = original_speed * current_speed_multiplier
请注意,如果您没有添加可以加速的最大次数或跳跃可以达到的最大高度,这可能会导致一些问题。
由于您不想永远保持速度倍增,因此您还需要降低每次更新(或设置的计时器)的速度。
current_speed_multiplier = current_speed_multiplier - diminish_value_per_update
总结一下:
但这取决于其余代码的实现,我建议您自己尝试一下,看看它是如何工作的!