2017-05-20 52 views
1

我正在關注「使用紅寶石學習遊戲編程」一書 其中一個練習是使用gosu加載圖像並使其從屏幕邊緣反彈。我跟着練習,圖像從頂部和左邊的角落反彈得很好,但是在從底部和右側反彈之前,它會沉到屏幕邊緣一段時間。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 

我認爲這是與紅寶石如何使用圖像的右上角爲圖像座標,但我認爲

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

本來是要解決這個問題,我怎樣才能讓它像我想要的那樣工作? 在此先感謝

+0

我敢肯定這是一個noob問題,但我似乎無法找到任何具體的信息... –

回答

0

問題來自我創建我自己的精靈,並沒有意識到高度和寬度值將會不同。

將代碼更改爲@width = @ blueheart.width給我一次崩潰 但我只是將值更改爲適當的寬度和高度並修復了問題。值@width = 50和@height = 43指的是書中不同的精靈大小。