我正在尝试将玩家与物品碰撞的各种方式:
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')
谢谢。
(来源:Rubyroids)