ロートル元ゲーム開発者がツクールでゲームを作る|虫捕りゲームを作る(2)

台風で気圧差と気温差にやられまくってます。今年の気象は本当に異常ですね。

さて、前回はプレイヤーが近づくと察知して逃げるムシを設定しましたので、今回はムシを捕まえるルーチンを作りたいと思います。とは言っても戦闘のルーチンをちょっと変える程度なんですが。まずは剣を振るアクションとアミを振るアクションを分岐させようと思います。

◆条件分岐:ボタン[決定]が押されている
  ◆条件分岐:決定キーを押している時間 = 0
    ◆条件分岐:$gameActors.actor(1).hasArmor($dataWeapons[44])
      ◆スイッチの操作:#0007 アミを振る = ON
      ◆
    :それ以外のとき
      ◆スイッチの操作:#0002 剣を振る = ON
      ◆
    :分岐終了
    ◆
  :分岐終了
  ◆変数の操作:#0012 決定キーを押している時間 += 1
  ◆
:それ以外のとき
  ◆変数の操作:#0012 決定キーを押している時間 = 0
  ◆
:分岐終了

hasArmor($dataWeapons[44])ってのは44番の防具である『釣りざお』を装備しているか否かを判断するスクリプトです。ちなみにツクールMVでは武器以外の装備はすべて『防具』扱いとなります(名前は『道具』とかいろいろつけられる) 釣りざおを武器に設定しても良かったんですが、武器は名前が変えられないので『武器:釣りざお』というのもHUNTER×HUNTERくらいでしか成立しないよなーと思って防具のカテゴリのひとつに『道具』というのを作りました。釣りざおを装備している場合はアミを振るスイッチが入り、そうでない場合は剣を振るスイッチが入るようになっています。ムシの出るエリアでは敵は出てこない設定なので、アミノ方が優先順位が上ってことで。次にアミを振るコモンイベントを作ります。

◆変数の操作:#0014 攻撃X = プレイヤーのマップX
◆変数の操作:#0015 攻撃Y = プレイヤーのマップY
◆条件分岐:プレイヤーが下を向いている
  ◆変数の操作:#0015 攻撃Y += 1
  ◆コモンイベント:ムシ取得
  ◆コモンイベント:対象者以外取得
  ◆条件分岐:対象者以外がOFF
    ◆アニメーションの表示:プレイヤー, アミ↓
    ◆
  :分岐終了
  ◆
:分岐終了
◆条件分岐:プレイヤーが左を向いている
  ◆変数の操作:#0014 攻撃X -= 1
  ◆コモンイベント:ムシ取得
  ◆コモンイベント:対象者以外取得
  ◆条件分岐:対象者以外がOFF
    ◆アニメーションの表示:プレイヤー, アミ←
    ◆
  :分岐終了
  ◆
:分岐終了
◆条件分岐:プレイヤーが右を向いている
  ◆変数の操作:#0014 攻撃X += 1
  ◆コモンイベント:ムシ取得
  ◆コモンイベント:対象者以外取得
  ◆条件分岐:対象者以外がOFF
    ◆アニメーションの表示:プレイヤー, アミ→
    ◆
  :分岐終了
  ◆
:分岐終了
◆条件分岐:プレイヤーが上を向いている
  ◆変数の操作:#0015 攻撃Y -= 1
  ◆コモンイベント:ムシ取得
  ◆コモンイベント:対象者以外取得
  ◆条件分岐:対象者以外がOFF
    ◆アニメーションの表示:プレイヤー, アミ↑
    ◆
  :分岐終了
  ◆
:分岐終了
◆ウェイト:15フレーム
◆スイッチの操作:#0007 アミを振る = OFF
◆スイッチの操作:#0004 対象者以外 = OFF

ほとんど剣を振ると同じですが、判定がちょっと厳しくなっています。剣を振るでは斜め前や横にいた敵にも攻撃が当たっていたのですが、アミを振るでは向いている方向以外は判定しません。最後にムシ取得の処理を作ります。

◆指定位置の情報取得:対象者ID, イベントID, ({攻撃X},{攻撃Y})
◆変数の操作:#0001 = 0
◆スクリプト:var targetID = $gameVariables.value(13);
:     :if(targetID != 0 && ~$dataMap.events[targetID].note.indexOf("[ムシ]")){
:     : var mapID = this._mapId;
:     : if(!$gameSelfSwitches.value([mapID, targetID, "B"])){
:     :  $gameSelfSwitches.setValue([mapID, targetID, "A"], true);
:     : }
:     :}

これも『対象者取得』とほぼ一緒です。違うのは『対象者』が『ムシ』になっていることですね。ムシのノートタグには[ムシ]と記入します。んでもって、ムシにセルフスイッチAを条件としたページを新たに作成し、以下のように記述します。

◆MEの演奏:get01 (90, 100, 0)
◆イベントの位置設定:このイベント, (0,0)
◆変数の操作:#0023 アイテム決定用乱数 = 乱数 1..10
◆条件分岐:アイテム決定用乱数 = 1
  ◆文章:なし, ウィンドウ, 下
  :  :ヘラクレスオオカブトをつかまえた!
  ◆アイテムの増減:ヘラクレスオオカブト + 1
  ◆
:それ以外のとき
  ◆文章:なし, ウィンドウ, 下
  :  :カブトムシをつかまえた!
  ◆アイテムの増減:カブトムシ + 1
  ◆
:分岐終了
◆セルフスイッチの操作:B = ON
◆セルフスイッチの操作:A = OFF

今回はサンプルなので乱数による条件分岐で捕まえるムシを決定していますが、実際は先日作った重みつきランダムプラグインを使う方向で考えてます。こんな感じで、とりあえずムシを捕まえるルーチンが完成しました。次は鉱山かなーなどと思いつつ、本日はここまで。

#雑記 #開発 #JavaScript #RPGツクール #プラグイン #RPGツクールMV #ムシキング

コーヒー代でも投げてくれると、作者が喜びます。