1

我正在关注“Learn game programming with 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)

应该解决这个问题,我怎样才能让它像我想要的那样工作?提前致谢

4

1 回答 1

0

问题来自我创建自己的精灵,而没有意识到高度和宽度值会有所不同。

将代码更改为 @width = @blueheart.width 让我崩溃了,但我只是将值更改为正确的宽度和高度并解决了问题。值@width = 50 和@height = 43 指的是书中不同的精灵大小。

于 2017-05-21T17:29:40.510 回答