В Ruby2D вы должны использовать tick
для анимации.
Окно также управляет циклом обновления, одним из немногих бесконечных циклов в программировании, который вы встретите, который не является ошибкой. Каждое окно имеет пульс, цикл, который запускается 60 раз в секунду, или настолько близко к нему, насколько позволяет производительность компьютера. Используя метод update
, мы можем войти в этот цикл и оживить окно!
Попробуйте что-то вроде этого:
require 'ruby2d'
set title: 'squares'
set background: 'blue'
set width: 1280
set height: 720
set borderless: true
on_air = false
tick = 0
ground = Rectangle.new(
x: 0, y: 620,
width: 1280, height: 100,
color: 'green'
)
player = Square.new(
x: 100, y: 520,
size: 100,
color: ['red', 'purple', 'fuchsia', 'maroon']
)
on :key_down do |jump|
if jump.key == 'j'
player.y -= 50
on_air = true
end
end
update do
if on_air
if tick % 1 == 0
player.y += 5
if (player.y + player.size) == ground.y
on_air = false
end
end
end
tick += 1
end
show