【サイトについて】
* RPGツクールMVを使った、ゲームを一層楽しくするためのアイディアや、豆知識、プラグインなどを紹介していきます。あくまで個人の考えに基づく記事ですので、参考程度にお読みいただければ幸いです。
<< 戦闘中、上から助けに来る仲間の作り方 | main | カスタムステート(状態異常)を作ろう! >>
スポンサーサイト
0

    一定期間更新がないため広告を表示しています

    | - | |- |
    戦闘中、敵の前に立ちはだかる仲間の作り方
    0
      こんにちは。
      前回・前々回の記事の「戦闘途中で助けに来るキャラクター」の作り方の続きです。
      いい加減あの自意識過剰娘シエスタの顔を見飽きたって人も多いと思うので、選手交代。

      今回は
      「上から落ちてくるだけじゃまだまだ物足りない、
      苦戦している仲間の前に颯爽と立ちはだかって、ボスから守るイベントを作りたい!」
      というバトルイベントの作り方です。

      某FFシリーズの某キャラでおなじみのイベントですが、ネタバレになるので伏せます。



      こんな感じですね(結局自意識過剰じゃないかという突っ込みはさておき)

      注目すべき点は、前回の「上から来てやったぞ!」に加えて
      ・お助けキャラが敵と味方の真ん中にいる
      ・お助けキャラが味方の方を向いている

      この2点です。

      今回は結構バトル中モーションの核となる部分にスクリプトを書き加えなければいけなくなるため、「rpg_sprites.js」は書き換えずに、このRPG専用の独自プラグインを作成し、そちらに記述したいと思います。
      となるとプラグインの作り方から解説しなければなりませんが、結構手間がかかるので3分クッキングの様に掻い摘まんで説明します。

      まずは本体側の設定から。
      [バトルイベント]でこういう感じのイベントをセットしておきます。
      ついでに参上と共にお助けキャラのテーマ曲などを流すと盛り上がりますよね。

      ■バトルイベント側の処理



      スイッチのOFFは、Javascript側で制御したいと思います。
      どうせONの後すぐOFFにするので、本体側でだらだらと並ぶとややこしいからです。

      さて、では本題。スクリプトの書き方です。
      書き換えが必要な部分は前回と同じ「rpg_sprites.js」の820〜870行目付近ですが、

      ・スイッチ1がONの時に右向きのルバンシュが、味方と敵の間に、上から降ってくる
      ・スイッチ2がONの時にルバンシュが左を向く


      単純な処理ですが、書き加える部分が数行に及ぶ上にif文が混在するので、
      オリジナルでプラグインを作成し、今回書き加える部分のみをそちらで管理したいと思います。この記事の最後に今回作ったJavascriptファイルも置いておきますので、書き換えて色々遊んでみてください。

      ■プラグイン側の処理
      ひとまずJavascriptを編集出来る環境に整えておいてください。
      普通のテキストエディタでも構いません。
      「Original.js」という空ファイルを作成し、プロジェクトフォルダのjs/pluginフォルダ内に入れます。

      プラグインを動かすために必要な情報のみ、ひとまず書き加えます。
      こんな感じです。
       
      //=====================================
      // Original.js
      //=====================================

      /*:
       * @plugindesc オリジナルゲーム専用プラグイン
       * @author Me
       *
       * @help オリジナルゲームのために作成したプラグイン
       *
       */

      (function() {


      })();

      ここまででひとまず保存。
      文字コードはUTF-8(BOM無し)にしておいて下さい。
      ツクールMV本体側の[プラグイン管理]には項目が出てくる様になりますので、
      Original.jsを[ON]にしておいて下さい。

      実際に処理を書いていくのは  (function() { から })(); までの間になります。

      仲間加入時のモーションを設定しているのは、昨日も解説しましたrpg_sprites.jsの870行目あたりのSprite_Actor.prototype.startEntryMotionです。
      今回はこの処理をOriginal.jsの方に移したいと思います。

      いいですか? いっきに行きますよ〜。
       
      (function() {

          // 仲間加入時のモーション
          var _Sprite_Actor_startEntryMotion = Sprite_Actor.prototype.startEntryMotion;

          Sprite_Actor.prototype.startEntryMotion = function() {
              _Sprite_Actor_startEntryMotion.call(this);

              // スイッチ#0001がONの時の動き
              if($gameSwitches.value(1)){
                  // 着地位置
                  this.setHome(450, 320);
                  // 上から来るぞ
                  this.startMove(0, -240, 0);
                  // 右向き
                  this.scale.x = -1;
                  // #0001スイッチをOFFにする
                  $gameSwitches.setValue(1,false);
              }

          };
       

      「うわぁ・・」と思われる方も居るかも知れませんが、落ち着いてみてください。
      私もかなり初心者ゆえに簡単なJavascriptしか使えないので、やってる事は一つ一つゆっくり見ていけば、ある程度分かると思います。

      if($gameSwitches.value(1)){
      スイッチ0001がONの時、という意味の処理です。

      this.setHome(450, 320);
      これが敵と味方の間の着地位置です。450がx座標、320がy座標ですね。
      ツクールMVではthis.setHomeという命令で、それが設定出来る様です。
      数値は自由に変更して確認してみてください。
      数をちょこちょこと変えるだけでも結構楽しいですし、色んなアイデアが降って来ますよ。

      this.startMove(0, -240, 0);
      これは昨日説明しましたね。上から来いよって命令です。

      this.scale.x = -1;
      この処理こそが今回のイベントのMVPです。ツクールMVだけに(←寒い)。
      「scale」というのは、その単語の意味する通り、グラフィックの大きさを決定するための変数です。
      xは横軸なので幅、yは縦軸なので高さですね。
      試しにここの数値をthis.scale.x=2、this.scale.y=2に変えてみてください。
      ↓キャラのグラフィックが2倍の大きさになりますから(笑)。



      このscaleという変数、負の数値を書く事で反転するのです
      仲間キャラだけじゃなくて敵キャラももちろん反転します。
      敵が反対向いた先制攻撃や、味方が反対を向いたバックアタックも作れますよ。
      わざわざ反転したグラフィックを用意する必要は無いわけです。
      なんて優秀!!

      $gameSwitches.setValue(1,false);
      最後にスイッチ#0001をOFFにして終わりです。

      まとめますと、
      (1) スイッチ#0001がONになったら
      (2) x=450,y=320の座標位置に
      (3) y=-240の方向から着地し
      (4) scale.x = -1で右向き状態にし
      (5) スイッチ#0001をOFFにする
      という工程です。

      では今度はルバンシュが一通り台詞を吐いた後に、敵の方向にくるっと振り向くというイベントを作ります。
      このSprite_Actor.prototype.startEntryMotionは戦闘開始時・メンバー加入時の動きを決めるものなので、ここにはその続きの処理を書いても意味がありません。別の場所に書く必要があります。
      同じくrpg_sprites.jsファイルの820行目あたりにある、Sprite_Actor.prototype.updateMotionです。戦闘中のキャラのモーションをセットするための関数です。

      ではこちらもOriginal.jsに書き加えましょう。
      さっき書いた部分の後に追加していきます。

      また一気に行きますよ〜。
       
          // バトル中のモーション
          var _Sprite_Actor_prototype_updateMotion = Sprite_Actor.prototype.updateMotion;
          Sprite_Actor.prototype.updateMotion = function() {
              _Sprite_Actor_prototype_updateMotion.call(this);

              // スイッチ#0002がONの時の動き
              if($gameSwitches.value(2)){
                  // ルバンシュ(Actor1_7)を左向きに転換
                  if (this._battlerName == "Actor1_7") {
                      this.scale.x = 1;
                  }
                  // #0002スイッチをOFFにする
                  $gameSwitches.setValue(2,false);
              }

          };

      「また何のこっちゃ」って感じかも知れませんが、やってる事はさっきと同じです。

      設定したバトルイベントでは、スイッチ#0002をONにした時に発動させたいので、

      if($gameSwitches.value(2)){
      スイッチ#0002がONの時

      if (this._battlerName == "Actor1_7") {
      ここで方向転換させたいキャラを限定させています。
      これ入れないとその場に居る仲間全員が方向転換してしまいます。
      (まあ全員最初から左向いているので問題は無いのですが)
      「Actor1_7」というのは、ルバンシュのグラフィックのファイル名(拡張子無し)です。
      プロジェクトフォルダ内のimg/sv_actorsに入っているものを確認してください。

      this.scale.x = 1;
      さっきの逆ですね。
      左向き、つまり本来の戦闘と同じ様な形で向かせたいので、数値は正の整数にすればいいわけです。

      $gameSwitches.setValue(2,false);
      スイッチ#0002をOFFにして終わりです。
      以上です。ね、簡単でしょう。

      まとめますと、
      (1) スイッチ#0002がONになったら
      (2) Actor1_7のグラフィックを
      (3) scale.x = 1で左向き状態にし
      (4) スイッチ#0002をOFFにする
      という工程となります。

      あとはOriginal.jsを保存して、出来上がりです。
       



      いかがでしょうか?
      結構ごっちゃごちゃと書いた様に見えますが、実際スクリプトは20行すら足していません。

      ちなみにこのボスは「あんたから始末してやる!」という台詞を吐いているので、
      ルバンシュの装備品に「狙われ率」の高いものを装備しておくと良いでしょう。
      (戦闘終了後に外すか入れ替える)

      では最後に、
      上で書いたOriginal.jsはダウンロード出来る様にしておきますので、
      色々数値を変えたりして遊んでみてください!

      ダウンロード(Original.js)

      長くなりましたが即席で作成した「お助けキャラは上から来るぞイベント」講座はここで終わりです。
      次回はまた別のネタにて!
      ここまでお読みいただきありがとうございました〜。

      | 戦闘 | 11:22 |- |
      スポンサーサイト
      0
        | - | 11:22 |- |
        PR