Gosu,如何检测何时按下键?
Gosu, how to detect when key is pressed?
我想在玩家按下左光标或右光标时左右移动我的角色。
Gosu 中的 update
函数如何检测按键被按下?
有两种方法可以检测按钮何时被按下。
使用事件侦听器
This method is called before #update if a button is pressed while the window has focus.
当你只想在按钮从松开到按下的瞬间触发某些东西(射击、跳跃……)时的理想选择
正在检查此帧中的按钮是否按下
Returns whether the button id
is currently pressed
当你想继续做某事直到按键仍然被按下(移动,...)时的理想选择
这是包含两个系统的代码:
class MyGame < Gosu::Window
def initialize
@x = 100
@y = 100
@velocity = 3
end
def button_down(button_id)
case button_id
when Gosu::KB_ESCAPE
close
when Gosu::KB_SPACE
shoot
else
super
end
end
def update
move_left if Gosu.button_down? Gosu::KB_LEFT
move_right if Gosu.button_down? Gosu::KB_RIGHT
move_up if Gosu.button_down? Gosu::KB_UP
move_down if Gosu.button_down? Gosu::KB_DOWN
end
def shoot
puts "Shoot!"
end
def move_left
@x -= @velocity
end
def move_right
@x += @velocity
end
def move_up
@y -= @velocity
end
def move_down
@y += @velocity
end
end
Gosu.button_down?(Gosu::<BUTTON>)
这是BUTTON constants的列表。
我想在玩家按下左光标或右光标时左右移动我的角色。
Gosu 中的 update
函数如何检测按键被按下?
有两种方法可以检测按钮何时被按下。
使用事件侦听器
This method is called before #update if a button is pressed while the window has focus.
当你只想在按钮从松开到按下的瞬间触发某些东西(射击、跳跃……)时的理想选择
正在检查此帧中的按钮是否按下
Returns whether the button
id
is currently pressed
当你想继续做某事直到按键仍然被按下(移动,...)时的理想选择
这是包含两个系统的代码:
class MyGame < Gosu::Window
def initialize
@x = 100
@y = 100
@velocity = 3
end
def button_down(button_id)
case button_id
when Gosu::KB_ESCAPE
close
when Gosu::KB_SPACE
shoot
else
super
end
end
def update
move_left if Gosu.button_down? Gosu::KB_LEFT
move_right if Gosu.button_down? Gosu::KB_RIGHT
move_up if Gosu.button_down? Gosu::KB_UP
move_down if Gosu.button_down? Gosu::KB_DOWN
end
def shoot
puts "Shoot!"
end
def move_left
@x -= @velocity
end
def move_right
@x += @velocity
end
def move_up
@y -= @velocity
end
def move_down
@y += @velocity
end
end
Gosu.button_down?(Gosu::<BUTTON>)
这是BUTTON constants的列表。