気ままなタンス*プログラミングなどのノートブック

プログラミングやRPGツクール、DTM等について、学んだことや備忘録をアウトプットとして残し、情報を必要としている誰かにとって「かゆいところに手が届く」ブログとなることを願いながら記事を書いています。

【RPGツクールMV】[ビギナー向け]Sprite(Sprite_Base)にアニメーションを表示する方法

スポンサーリンク

こんにちは。

タイトルの件ですが、RPGツクールMVのスクリプトで作成した「Sprite_Base」に アニメーションを表示したいときってありますよね。

通常はマップ上に表示されたキャラクターに対して、イベントコマンド(アニメーションの表示)で アニメーションを制御するかと思います。

自作シーンの処理でアニメーションを使いたいけど・・・

でも、自作のシーンとメニューを作成し、その処理の中で画像にアニメーションを適用するとなると、 どうやったらいいのか、悩ましいですよね。(僕は結構悩んでしまいました)

そこで、この記事ではSpriteとして読み込んだ画像に、アニメーションを表示する方法を ソースコードを記載いたします。

前提

  • Sceneの仕組みがなんとなくわかっている
  • Sprite_Baseに画像を読み込んで操作したことがある

アニメーションを表示するためのソースコード

  • Sprite_Baseのメソッド:startAnimationを利用します
    • Spriteに対して、アニメーションを表示
      • startAnimation(animation, mirror, delay)
      • animation: $dataAnimations[n]のアニメーションオブジェクトを指定する(nにはデータベースのアニメーション番号を指定します)
      • mirror: アニメーションを判定して表示するかどうかをtrue, falseで指定します
      • delay: フレーム数を指定し、その分だけアニメーションの開始を遅延させます

アニメーションを表示するシーンクラス

// my_scene.js
function Scene_MyMenu() {}
Scene_MyMenu.prototype = Object.create(Scene_Base.prototype);
Scene_MyMenu.prototype.constructor = Scene_MyMenu;
Scene_MyMenu.prototype.initialize = function() {
  Scene_Base.prototype.initialize.call(this);
}
Scene_MyMenu.prototype.create = function() {
  Scene_Base.prototype.create.call(this);
  this.createWindowLayer();
  // ここから開始
  var sprite = new Sprite_Base();
  sprite.bitmap = ImageManager.loadPicture("画像ファイル名");
  var animation = $dataAnimations[1]; // 表示したいアニメーションのデータベース番号
  sprite.startAnimation(animation, false, 0);
  // ここで終了
  this.addChild(sprite);
}

上記シーンクラスを呼び出すためのコード

マップにキャラクターを配置した上で イベントコマンド「スクリプト」で下記のソースコードを記載しましょう。 対象のキャラクターのイベントが開始すると、シーンが切り替わり指定した画像が表示され、 同時にアニメーションが表示されます。

SceneManager.push(Scene_MyMenu);

表示方法については、参考にできるソースが 「rpg_objects.js」や「rpg_sprites.js」にあります。

上記Spriteを表示するコマンドをメソッド化しておき、 コマンドを選択した時やウィンドウを閉じる時など、 各タイミングで呼び出す等、色々な場面で利用できそうですね。