意味不明なデモ
うむ、スランプだ。
何か作ってみようと思ってできたものは、機能の有効な使い方ではなく、気の利いたサンプルにもならず、面白いものでもない。
いったいこれはなんなん?!
DXRubyFramework0.0.2用。
require 'dxruby' require 'dxrubyfw' class Panel < Sprite @@image = Image.new(16, 16, [255,255,255]) @@command = [[:add_alpha, -1], [:wait, 1]] * 255 @@command << [:stop] def initialize(x, y) self.x = x self.y = y self.collision = [0, 0, 15, 15] self.image = @@image self.visible = false end def hit(m) self.image_alpha = 255 self.visible = true self.start_command(@@command) end def stop self.visible = false self.start_command(nil) end end panels = [] (0..29).each do |y| (0..39).each do |x| panels << Panel.new(x * 16, y * 16) end end mouse = Sprite.new mouse.collision = [0, 0, 0, 0] mouse.update Window.loop do mouse.x, mouse.y = Input.mousePosX, Input.mousePosY mouse.update Sprite.check(mouse, panels) Sprite.update(panels) Window.drawSprite(panels) end
強いて言うなら、Spriteは描画せずに衝突判定専用に使うという手がある。ぐらいか。
いずれ色んな形を追加すればDXRubyExと同じ使い方ができちゃったり。もうアレいらないね。
ところでSprite#updateしないと衝突判定の範囲がきちんと更新されないというのは、まあ、もともと仕様でそうしたんだけどこうやって使ってみると使いにくい。
そのうち直そう。