python Ursina 中的冲刺功能出现问题
Problem with making a sprinting function in python Ursina
我正在制作 Mineclone,但卡在了冲刺阶段。
我想要的代码可以在您按下 Ctrl 键时将播放器置于 'sprinting' 模式,只要您按下了 w,并在松开 w 时退出冲刺。冲刺时释放 Ctrl 应该什么都不做。我在许多其他代码中尝试过这段代码,但是当我测试它时,它冻结了。
def update():
global block_pick
if held_keys['control'] and held_keys['w']:
while held_keys['w']:
player.speed = 10
所以代码会检查每一帧。
我不是很熟悉 Python 的游戏,但如果这是 vanilla Python 并且没有使用一些必须以不同方式编写的额外库;
首先,您的代码需要在更新功能下缩进。
其次,代码每帧都在更新,这意味着整个执行每帧速率为 re-run。所以while循环会阻止frame再次更新。
我建议您为冲刺引入一个全局布尔值,它会根据按下的按钮而变化。
sprint = False # global boolean
def update():
global block_pick
global sprint
if held_keys['control'] and held_keys['w']:
sprint = True
player.speed = 10
if sprint and not held_keys['w']: # check for button pressed while sprinting.
sprint = False
player.speed = 1
我正在制作 Mineclone,但卡在了冲刺阶段。
我想要的代码可以在您按下 Ctrl 键时将播放器置于 'sprinting' 模式,只要您按下了 w,并在松开 w 时退出冲刺。冲刺时释放 Ctrl 应该什么都不做。我在许多其他代码中尝试过这段代码,但是当我测试它时,它冻结了。
def update():
global block_pick
if held_keys['control'] and held_keys['w']:
while held_keys['w']:
player.speed = 10
所以代码会检查每一帧。
我不是很熟悉 Python 的游戏,但如果这是 vanilla Python 并且没有使用一些必须以不同方式编写的额外库;
首先,您的代码需要在更新功能下缩进。 其次,代码每帧都在更新,这意味着整个执行每帧速率为 re-run。所以while循环会阻止frame再次更新。
我建议您为冲刺引入一个全局布尔值,它会根据按下的按钮而变化。
sprint = False # global boolean
def update():
global block_pick
global sprint
if held_keys['control'] and held_keys['w']:
sprint = True
player.speed = 10
if sprint and not held_keys['w']: # check for button pressed while sprinting.
sprint = False
player.speed = 1