Руби / Госу получают прыгающий образ

Я следую книге "Изучай программирование с помощью ruby". Одно из упражнений - загрузить изображение с помощью gosu и заставить его отскочить от краев экрана. Я выполнил упражнение, и изображение отскочило от верхнего и левого углов, но некоторое время пройдет мимо края экрана, прежде чем отскочить от нижней и правой сторон.

require 'gosu'

class Window < Gosu::Window
def initialize
super(800, 600)
self.caption = 'First Game' 
 @blueheart = Gosu::Image.new('blueheart.png')
 @x = 200
@y = 200
@width = 50
@height = 43
@velocity_x = 2
@velocity_y = 2
@direction = 1 
end

def update

@x += @velocity_x
@y += @velocity_y
@velocity_x*= -1 if @x + @width /2 > 800 || @x - @width / 2 < 0
@velocity_y*= -1 if @y + @height /2 > 600 || @y - @height / 2 < 0


end



def draw
@blueheart.draw(@x - @width/2, @y - @height/2, 1)
end

end
window = Window.new

window.show 

Я думаю, что это связано с тем, как ruby ​​использует верхний правый угол изображения в качестве координат для изображения, но я подумал

@blueheart.draw(@x - @width/2, @y - @height/2, 1)

должен был это исправить, как я могу заставить его работать так, как я хочу? заранее спасибо

1 ответ

Проблема возникла из-за того, что я создавал свои собственные спрайты и не понимал, что значения высоты и ширины будут другими.

изменение кода на @width = @blueheart.width привело к сбою, но я просто изменил значения на правильную ширину и высоту и решил проблему. значения @width = 50 и @height = 43 относились к разным размерам спрайтов в книге.

Другие вопросы по тегам