mieki256's diary



2013/12/15() [n年前の日記]

#3 [dxruby][game] DXRubyでペガサス流星拳

聖闘士星矢Ωの感想記事を書いているうちに、「その、ペガサス流星拳の表現って、DXRubyで試せないのかな?」と思えてきまして。

1秒間に100発打てるということは、アニメは1秒間24コマだから、100/24 = 4.166...。1コマにつき、約4発、パンチを描けばいいのですかね?

# ペガサス流星拳

require 'dxruby'

bodyimg0 = Image.load("body1.png")
bodyimg1 = Image.load("body2.png")
punchimg = Image.load("punch.png")

# パンチを出す中心位置
punch_bx, punch_by = 210, 300

cnt = 0
framerate = 24
Window.fps = framerate # 24FPSに設定

Window.loop do
  break if Input.keyPush?(K_ESCAPE)

  if cnt < framerate
    Window.draw(0, 0, bodyimg0)
  else
    Window.draw(0, 0, bodyimg1)
    
    # 1秒間で100発ということは、
    # 1/24秒なら、約4発
    4.times do |i|
      c = (cnt - framerate + 8.0).to_f / framerate.to_f
      x = punch_bx + (rand(400) - 200) * c - punchimg.width / 2
      y = punch_by + (rand(200) - 100) * c - punchimg.height / 2
      scale = 1.0 + (1.5 * (cnt - framerate).to_f / framerate.to_f) * rand()
      angle = rand(45) - 22.5
      Window.drawEx(x, y, punchimg,
                    :angle => angle,
                    :scalex => scale, :scaley => scale)
    end
  end
  
  cnt += 1
  cnt = 0 if cnt > framerate * 2
end
ペガサス流星拳
GIFアニメにした段階でフレームレートが怪しいことになってますけど。こんな感じだった…のかな…。うーん。記憶の中にあったソレより、全然ショボイ…。どうやら、かなり脳内美化をしちゃってたような気がしてきました。

まあ、ちゃんとした絵で描かれてたら、カッコよく見えるのかもしれないか。それと、今ならCGが使えるから、例えば流星みたいなパーティクルも一緒に飛ばして、とかやれたりするのかも。もしかしたら、自分がぼんやり見ていて気づかなかっただけで、星矢Ωの中でも、既にそういう工夫を施したカットがあったのかもしれませんな…。

とりあえず、画像とソースを置いときます。Public Domain ってことで。

_ryuuseiken.zip

妙なことを思いついたら、すぐに試せるあたりが、DXRuby のいいところですな。もちろん、こういうのは、Ruby/SDL でも PyGame でも HSP でも Processing でも、何使ってもいいんですけど。Windows上で動かしたときに爆速描画な点と、使い方が簡単な点が、DXRuby のいいところ、とも思います。

以上です。

過去ログ表示

Prev - 2013/12 - Next
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project