Я пробую разные способы столкновения игрока с предметом:
Coin.each_bounding_circle_collision(@player) do |coin, player|
puts "coin collides with player"
end
Item.each_bounding_circle_collision(@player) do |item, player|
puts "item collides with player"
end
@player.each_bounding_circle_collision(Item) do |player, item|
puts "player collides with item"
end
@player.each_bounding_circle_collision(Coin) do |player, coin|
puts "player collides with coin"
end
Из них работают только первый и последний (т. Е. Те, где я проверяю против Coin), несмотря на то, что Item является родительским классом Coin:
class Item < Chingu::GameObject
trait :timer
trait :velocity
trait :collision_detection
trait :bounding_circle, :scale => 0.8
attr_reader :score
def initialize(options = {})
super(options)
self.zorder = Z::Item
end
end
class Coin < Item
def setup
@animation = Chingu::Animation.new(:file => "media/coin.png", :delay => 100, :size => [14, 18])
@image = @animation.first
cache_bounding_circle
end
def update
@image = @animation.next
end
end
Из-за моего скромного знания Ruby в целом, я не понимаю, почему это не работает, возможно, я упускаю что-то очевидное. Любая помощь будет принята с благодарностью.
(из-за низкой репутации я не могу пометить это как 'chingu', так что это происходит под следующим самым близким, 'libgosu') *
Спасибо.
(Источник: Рубироиды )