DXRubyFramework0.0.2チュートリアル
いろいろと不具合はありそうだが、とりあえずリリース直前。
なんとなくチュートリアルその1を書いてみたからそれを公開してみる。
超基本の使い方がわかる。かもしれない。
マニュアルはまだ真っ白なのでそれが書けたらWikiに置く予定。
対応するバージョンはDXRuby1.0.9のみ、としておく。動作確認してないし。1.1系はいまのところ×。
チュートリアルは続きで。
DXRubyFrameworkチュートリアルみたいなもの01 ■1.はじめに この文章はDXRubyFramework0.0.2のチュートリアルみたいなものです。 機能が少し複雑なので、使う側からの視点で、一通りの機能を順に解説します。 解説はテキストのみですが、コードはサンプルとしてsampleディレクトリに入れてありますので、ぜひ実行したりいじったりしてみてください。 ■2.DXRubyFrameworkとは DXRubyFrameworkは、DXRubyを使ってゲームを作るときに必要になりがちな、キャラ管理の仕組みを提供するライブラリです。 また、キャラをたくさん動かすとRubyの実行速度では厳しいのですが、DXRubyFrameworkはそのあたりの処理をC言語で実装してますので、これを使うことでRubyで弾幕シューティングなどを作ることができるようにもなります。 DXRubyFrameworkで提供するのはSpriteクラス(だけ)です。あと、Windowモジュールに描画メソッドを一つ追加します。 Spriteは画像や表示位置などの情報を持ち、Window.drawSpriteで描画したり、自分にエフェクトをかけたり、アニメーションしたり、あらかじめ指定した通りに移動したりできます。他のSpriteと衝突しているかどうかの判定もこなします。 また、これらの処理を最高速で行うために、配列に入れたSpriteをまとめて管理するためのクラスメソッドも提供しています。 このファイル(tutorial01.txt)では、まずSpriteクラスの基本的な機能を説明します。 02、03と進むと少しずつ高度な機能や使い方の解説になっていきます。 ■3.まずは生成と表示から とりあえず、Sprite.newとすれば生成できます。引数はありません。 Sprite#x=、Sprite#y=で表示位置を指定することができ、Sprite#image=で表示するImageオブジェクトを指定できます。表示にはWindow.drawSpriteを使います。 この「Sprite#x=」という書き方は、Sprite.newで生成したオブジェクトのメソッドx=を表し、これらのメソッドは以下のように使うことができます。 ---sample01.rb require 'dxruby' require 'dxrubyfw' # (100,100)の位置に50*50のサイズの白い四角を表示する spr = Sprite.new spr.x = 100 spr.y = 100 spr.image = Image.new(50, 50, [255, 255, 255]) Window.loop do Window.drawSprite(spr) end --- 表示に影響を与えるメソッドとして、回転角度を指定するSprite#image_angle=や、拡大率を指定するSprite#image_scale_x=/image_scale_y=、α値を指定するSprite#image_alpha=などがあります。 まとめて指定しちゃったサンプルは以下です。 ---sample02.rb require 'dxruby' require 'dxrubyfw' # (100,100)の位置に50*50のサイズの白い四角をちょっと細工して表示する spr = Sprite.new spr.x = 100 spr.y = 100 spr.image_angle = 30 # 360度系、右回転(時計回り)する。 spr.image_scale_x = 3 # 横の倍率。1で等倍 spr.image_scale_y = 0.5 # 縦の倍率。1で等倍 spr.image_alpha = 128 # 0で完全に透明。255で完全に表示。中間なので透けてグレーになる。 spr.image = Image.new(50, 50, [255, 255, 255]) Window.loop do Window.drawSprite(spr) end --- ■4.アニメーションさせる 絵をアニメーションさせるには、Sprite#animation_image=でアニメーションさせる絵の配列を指定してから、Sprite#start_animationでアニメパターンを指定します。 配列の最初から最後までを繰り返すアニメパターンは、切り替える時間(フレーム数)だけの指定となります。 また、アニメーションをきちんと進めるために毎フレームSprite#updateを呼ぶ必要があります。 ---sample03.rb require 'dxruby' require 'dxrubyfw' # (100,100)の位置にenemy2.pngの画像をアニメーションしつつ表示する spr = Sprite.new spr.x = 100 spr.y = 100 spr.animation_image = Image.load_to_array("image/enemy2.png", 4, 1) spr.start_animation(30) Window.loop do spr.update Window.drawSprite(spr) end --- アニメパターンとして(フレーム数, アニメパターン配列)を渡すと、指定した絵を繰り返すことができます。 アニメパターン配列はanimation_image=で指定した配列の番号の配列です。 具体的には以下のような感じになります。 ---sample04.rb require 'dxruby' require 'dxrubyfw' # (100,100)の位置にenemy2.pngの画像をアニメーションしつつ表示する spr = Sprite.new spr.x = 100 spr.y = 100 spr.animation_image = Image.load_to_array("image/enemy2.png", 4, 1) spr.start_animation(10, [0,1]) # ←animation_image=で指定した配列の[0]と[1]を交互に繰り返す Window.loop do spr.update Window.drawSprite(spr) end --- ■5.自動的に移動させる Sprite#dx、Sprite#dyに値を設定すると、Sprite#update時にxとyに加算されます。 これを利用すると、キャラを自動的に移動させることができます。 ---sample05.rb require 'dxruby' require 'dxrubyfw' # enemy2.pngの画像をアニメーションしつつ右下に移動させる spr = Sprite.new spr.x = 0 spr.y = 0 spr.dx = 1 spr.dy = 1 spr.animation_image = Image.load_to_array("image/enemy2.png", 4, 1) spr.start_animation(30) Window.loop do spr.update Window.drawSprite(spr) end --- もちろん、毎フレームspr.x += 1、spr.y += 1としても同じことができます。 ■6.おしまい これで基本の説明はおしまいです。 Spriteは自分で自分の表示位置や画像を持ち、勝手に色んなことをしてくれるクラスです。 少し高度な使い方を、tutorial02.txtで説明します。