我試圖abs在代碼中呼叫我的數學,但終端報告說 abs 在本應使用語言本身時無法識別。錯誤資訊:customcode.rb:58:in <class:Survivor>: undefined method abs for nil:NilClass (NoMethodError)
vel_sum = (@vel_x).abs (@vel_y).abs\r
^^^^
這是錯誤所在的代碼部分
def acceleration(direction)
case direction
when :forwards
@vel_x = Math.sin(@sprite.rotate*Math::PI/180)
@vel_y -= Math.cos(@sprite.rotate*Math::PI/180)
when :backwards
@vel_x -= Math.sin(@sprite.rotate*Math::PI/180)
@vel_y = Math.cos(@sprite.rotate*Math::PI/180)
end
end
vel_sum = @vel_x.abs @vel_y.abs
if vel_sum > 2
@vel_x = @vel_x*2
@vel_y = @vel_y*2
end
vel_sum = @vel_x.abs @vel_y.abs
@vel_x 和 y 應該是整數所以我真的不知道為什么它不起作用。我希望一些路人可以幫助我解決這個問題。
uj5u.com熱心網友回復:
vel_sum...代碼在方法之外,def acceleration因此程式在呼叫時不理解@vel_x 和@vel_y。
def acceleration(direction)
case direction
when :forwards
@vel_x = Math.sin(@sprite.rotate*Math::PI/180)
@vel_y -= Math.cos(@sprite.rotate*Math::PI/180)
when :backwards
@vel_x -= Math.sin(@sprite.rotate*Math::PI/180)
@vel_y = Math.cos(@sprite.rotate*Math::PI/180)
end
vel_sum = @vel_x.abs @vel_y.abs
if vel_sum > 2
@vel_x = @vel_x*(2/vel_sum)
@vel_y = @vel_y*(2/vel_sum)
end
end
這個修復應該作業..
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/536874.html
標籤:红宝石
下一篇:RubyonRails:條件顯示
