MotionProxyモジュール


このモジュールは、モーションを設定時にコマンドを定義するメソッドを定義したモジュールです。

モーションは、スプライトの動きを指します。
縦に移動する、回転するというような動作を記述します。

サンプル

sprite_template :human do |st|
  # 中略

  st.motion :default do |commands|
    # MotionProxyはこのcommandsが持っているメソッドを定義しています
    commands.loop true
    commands.move_to_v 0, 418, 4
  end
end


実行時に評価される値の指定
motionを指定する関数の引数は定義時に評価されるため、
実行時に状態に応じて処理を変えるということはそのままだとできない。
MotionProxyのメソッドの引数にProcオブジェクト(Proc.newやlambdaの返り値)が
渡されてきたときは、実行時にそのProcオブジェクトが実行される。
たとえば以下の処理ではランダムな速度で下に落ちる。
commands.velocity(0, lambda do |s|
    rand(8) # ランダムな速度で下に落ちる
  end)

  • Procオブジェクトのブロックの第1引数はRmakeCommonSpriteのインスタンス
  • Procオブジェクトのブロックの返り値がMotionProxyのメソッドの引数に渡されます

loopメソッド


モーションがループするかどうかを設定します。

# ループを有効にする
commands.loop true

# ループを無効にする
commands.loop false


  • 第1引数:ループを有効にするかどうか(true/false)

move_toメソッド


指定した場所に、指定したフレーム数で移動します。

# 20フレームかけて、(x,y)=(100,50)に移動する
commands.move_to 100, 50, 20


  • 第1引数:x座標
  • 第2引数:y座標
  • 第3引数:移動に使うフレーム数

move_to_vメソッド


指定した場所に、指定した速度で移動します。

# 1フレームあたり20の速度で、(x,y)=(100,50)に移動する
commands.move_to_v 100, 50, 20


  • 第1引数:x座標
  • 第2引数:y座標
  • 第3引数:移動速度(1フレームあたりの移動速度)

move_byメソッド


現在位置から指定した座標分、指定したフレーム数で移動します。
move_to系メソッドとは異なり、現在位置から相対的に移動するメソッドであることに注意してください。

# 20フレームかけて、(x,y)=(100,50)だけ移動する
commands.move_by 100, 50, 20


  • 第1引数:x軸の移動量
  • 第2引数:y軸の移動量
  • 第3引数:移動に使うフレーム数

move_by_vメソッド


現在位置から指定した座標分、指定した速度で移動します。
move_to系メソッドとは異なり、現在位置から相対的に移動するメソッドであることに注意してください。

# 1フレームあたり20の速度で、(x,y)=(100,50)だけ移動する
commands.move_by_v 100, 50, 20


  • 第1引数:x軸の移動量
  • 第2引数:y軸の移動量
  • 第3引数:移動速度(1フレームあたりの移動速度)

velocityメソッド


スプライトの速度を設定します。

# 1フレームあたり(x,y)=(30,20)の速度に設定する
commands.velocity 30, 20


  • 第1引数:x軸の移動量
  • 第2引数:y軸の移動量

rotation_toメソッド


指定したラジアン(角度)分、指定したフレーム数で回転します。
回転の量は正の値ならば時計回りです。

# 20フレームかけて、1π(180度)の角度に向かって回転する
commands.rotation_to Math::PI, 20


  • 第1引数:ラジアン(角度)
  • 第2引数:回転に使うフレーム数

rotation_to_vメソッド


指定したラジアン(角度)分、指定した速度で回転します。
回転の量は正の値ならば時計回りです。

# 1フレームあたり1/2π(90度)の速度で、1π(180度)の角度に向かって回転する
commands.rotation_to_v Math::PI, Math::PI/2


  • 第1引数:ラジアン(角度)
  • 第2引数:回転速度(1フレームあたりのラジアン(回転角度))

rotation_byメソッド


現在の回転角度から指定したラジアン(角度)分、指定したフレーム数で回転します。
回転の量は正の値ならば時計回りです。
rotation_to系メソッドとは異なり、現在の回転角度から相対的に回転するメソッドであることに注意してください。

# 20フレームかけて、1π(180度)回転する
commands.rotation_by Math::PI, 20


  • 第1引数:ラジアン(回転量)
  • 第2引数:回転に使うフレーム数

rotation_by_vメソッド


現在の回転角度から指定したラジアン(角度)分、指定した速度で回転します。
回転の量は正の値ならば時計回りです。
rotation_to系メソッドとは異なり、現在の回転角度から相対的に回転するメソッドであることに注意してください。

# 1フレームあたり1/2π(90度)の速度で、1π(180度)回転する
commands.rotation_by_v Math::PI, Math::PI/2


  • 第1引数:ラジアン(回転量)
  • 第2引数:回転速度(1フレームあたりのラジアン(回転角度))

rotation_speedメソッド


回転速度を指定します。
回転の量は正の値ならば時計回りです。

# 1フレームあたり1/4π(45度)の速度に設定する
commands.rotation_speed Math::PI/2


  • 第1引数:ラジアン(回転量)

scale_toメソッド


指定したサイズに、指定したフレーム数で拡大・縮小します。

# 20フレームかけて、(100,50)のサイズに拡大・縮小する
commands.scale_to 100, 50, 20


  • 第1引数:幅
  • 第2引数:高さ
  • 第3引数:拡大・縮小に使うフレーム数

scale_to_vメソッド


指定したサイズに、指定した速度で拡大・縮小します。

# 1フレームあたり20の速度で、(100,50)のサイズに拡大・縮小する
commands.move_to_v 100, 50, 20


  • 第1引数:幅
  • 第2引数:高さ
  • 第3引数:拡大・縮小速度(1フレームあたりの拡大・縮小速度)

scale_byメソッド


現在サイズから指定したサイズ分、指定したフレーム数で拡大・縮小します。
scale_to系メソッドとは異なり、現在サイズから相対的に拡大・縮小するメソッドであることに注意してください。

# 20フレームかけて、(100,50)のサイズだけ拡大・縮小する
commands.move_by 100, 50, 20


  • 第1引数:幅
  • 第2引数:高さ
  • 第3引数:拡大・縮小に使うフレーム数

scale_by_vメソッド


現在サイズから指定したサイズ分、指定した拡大・縮小で移動します。
scale_to系メソッドとは異なり、現在サイズから相対的に拡大・縮小するメソッドであることに注意してください。

# 1フレームあたり20の速度で、(100,50)のサイズだけ拡大・縮小する
commands.move_by_v 100, 50, 20


  • 第1引数:幅
  • 第2引数:高さ
  • 第3引数:拡大・縮小速度(1フレームあたりの拡大・縮小速度)

scale_velocityメソッド


スプライトの拡大・縮小速度を設定します。

# 1フレームあたり(x,y)=(30,20)の速度で拡大・縮小する
commands.scale_velocity 30, 20


  • 第1引数:x軸の拡大・縮小量
  • 第2引数:y軸の拡大・縮小量

wait_motionメソッド


現在設定されているモーションのすべての完了を待つメソッドです。

モーションの中にはmove_toのように完了まで数フレーム必要な命令があり、その完了を待ちます。

commands.wait_motion


wait_frameメソッド


指定したフレーム数分だけ、コマンドの実行を待つメソッドです。

# 10フレーム待つ
commands.wait_frame 10


  • 第1引数:待つフレーム数

proc_callメソッド


モーションをコマンドのリストではなく、プログラムで制御したい場合に使うメソッドです。
本モジュールで使うことができるメソッド(move_to)で制御するよりも低速ですが、自由度が高いため複雑な制御をする場合に使うと良いでしょう。

commands.proc_call do |sprite|
  # ここにrubyコードを記述します
end


クラスリファレンストップに戻る

サンプル一覧

チュートリアル1 - ようこそ、Rmakeの世界へ

アニメーションとモーション
あたり判定の初歩、タップすると話すキャラ
あたり判定の応用、キャラクタ同士の衝突
弾を打つキャラクタ
ソースのロードとライブラリのロード

サンプルゲーム

サンプル - 脱出ゲーム
脱出ゲームのサンプルです。

サンプル - シューティング
弾幕シューティングゲームのサンプルです。

まじたいスリーマッチパズル
スリーマッチパズルゲームのサンプルです。

お知らせ

2014/03/04 ver. 0.1.39 を公開しました!
・0.1.36でWindowsで起動しない問題を修正しました
(Android版はバージョン番号のみの変更です。)

2014/03/04 ver. 0.1.36 を公開しました!
・アプリケーションアイコンを変更しました
・セーブ・ロードを繰り返すとアプリが強制終了する問題を修正しました
・他、重大なバグを修正しました

ダウンロードはこちらから。

2013/07/17 Code on Rmakeをα公開しました!