こんにちは。
タイトルの件ですが、RPGツクールMVのスクリプトで作成した「Sprite_Base」に アニメーションを表示したいときってありますよね。
通常はマップ上に表示されたキャラクターに対して、イベントコマンド(アニメーションの表示)で アニメーションを制御するかと思います。
自作シーンの処理でアニメーションを使いたいけど・・・
でも、自作のシーンとメニューを作成し、その処理の中で画像にアニメーションを適用するとなると、 どうやったらいいのか、悩ましいですよね。(僕は結構悩んでしまいました)
そこで、この記事ではSpriteとして読み込んだ画像に、アニメーションを表示する方法を ソースコードを記載いたします。
前提
- Sceneの仕組みがなんとなくわかっている
- Sprite_Baseに画像を読み込んで操作したことがある
アニメーションを表示するためのソースコード
- Sprite_Baseのメソッド:
startAnimation
を利用します- Spriteに対して、アニメーションを表示
- startAnimation(animation, mirror, delay)
- animation: $dataAnimations[n]のアニメーションオブジェクトを指定する(nにはデータベースのアニメーション番号を指定します)
- mirror: アニメーションを判定して表示するかどうかをtrue, falseで指定します
- delay: フレーム数を指定し、その分だけアニメーションの開始を遅延させます
- Spriteに対して、アニメーションを表示
アニメーションを表示するシーンクラス
// 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を表示するコマンドをメソッド化しておき、 コマンドを選択した時やウィンドウを閉じる時など、 各タイミングで呼び出す等、色々な場面で利用できそうですね。