Ruby物理エンジンにRuby/Tkで描画するサンプルを追加しました
http://github.com/technohippy/Pongo/tree/master
あとなんかいろいろとバグがあったので修正。目視・手打で移植すると当たり前だけどいろいろ間違えるっすね。p1とp2、一文字違いに気づくのに2日かかって心が折れかけた・・・。
ともあれ、これでLinuxな人はRubyさえあればあとは何もインストールしなくても物理エンジン試せるはずなのでぜひぜひ。
ついでに本家にあったCarDemoも移植。AS3版についてくるデモが二つとも動いたので、たぶん致命的なバグは残ってないんじゃないかなと。
ちなみに前回Shoesで書いた例をRuby/Tk用のレンダラ使って書き直すと、こう。
require 'tk' require 'pongo' require 'pongo/renderer/tk_renderer' require 'pongo/logger/standard_logger' include Pongo root = TkRoot.new canvas = TkCanvas.new(root, :width => 500, :height => 350) canvas.pack # レンダラとかロガーとか重力とかいろいろ設定 APEngine.renderer = Renderer::TkRenderer.new(canvas) APEngine.logger = Logger::StandardLogger.new APEngine.add_force VectorForce.new(false, 0, 2) # パーティクルはグループに登録しないと駄目らしいので準備 default_group = Group.new default_group.collide_internal = true # 落下物。箱とか丸とか default_group.add_particle(RectangleParticle.new(275, 90, 20, 30)) default_group.add_particle(CircleParticle.new(255, 150, 3)) # 地面 default_group.add_particle(RectangleParticle.new(250, 250, 300, 50, :fixed => true)) # グループをエンジンに登録 APEngine.add_group(default_group) # 実行 TkTimer.start(10) do |timer| APEngine.step APEngine.draw end Tk.mainloop
そういえばShoesよりもRuby/Tkの方がずっと早いんすね。RoboDemoでとても顕著。