忍者ブログ

へぷたなすくろーる

RPGツクールのブログです。イベント講座とRGSS3スクリプト配布をやってます♪

Home > > [PR] Home > イベントのすゝめ > イベントのすゝめ(13) ホラーゲームだ「追跡者」を作ろう

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

イベントのすゝめ(13) ホラーゲームだ「追跡者」を作ろう

このコーナーでは、主に初心者さんに向けたイベントのテクニックを紹介していきます。
RPGツクールVXAceで説明していきますが、多くはVXや他のツクールでも可能です。
合言葉は「…10%の才能と20%の努力…そして、30%の知識…残る40%は…慣れだろうな」

第十三回はツクール製ホラーゲームなどでお馴染みの
マップを超えてプレイヤーを追跡してくるイベントの紹介です。
これまでに紹介したテクニックを総動員して、私なりの方法でまとめてみました。
1つ1つの仕組みは簡単になるように整理していますのでお気軽にどうぞ。
作りたいゲーム
・ホラーゲームで、出現する追跡者に捕まるとゲームオーバー
・追跡者はプレイヤーを追いかけ、違うマップに逃げても追いかけてくる
・何かを調べたりある場所に移動したりストーリーを進めたりと様々な状況で出現する
・遠くまで逃げ切るか、隠れるポイントに逃げ込めば追跡者は一旦いなくなる
ではこれをどうやって作っていくのか?
興味のある方は、つづきはこちら、からどうぞ。 「追跡者」本体
これはマップイベントで各マップに1体ずつ配置します。なるべくマップ中央に置いて下さい。
出現条件、スイッチ「追跡者出現」。トリガー、イベントから接触。自律移動タイプ、近づく。
イベント内容はとりあえずゲームオーバーだけにしておきましょうか。

このイベントの解説
おそらくこの手のホラーゲームを作ろうとした人は、まずこれを思いつくかと。
シンプルなイベントなので特に気をつけることはありませんが
ポイントとしてはこのイベント自体に大した機能がないことです。
初心者さんはついつい出現や消失の処理もこれ1つでやろうと考えがちですが
「捕まったときの処理」だけ組み、「スイッチで出現状態を制御できる」のみにします。

手動出現/手動消去
ではどうやって出現させるかというと
条件分岐:スイッチ「追跡者出現」がoff
  イベントの位置設定:追跡者を出現させたい位置を設定
  スイッチの操作:スイッチ「追跡者出現」をonにする
という処理を出現させたいイベントに追加します。
追跡者を消去したい場合は単にスイッチ「追跡者出現」をoffにします。

このイベントの解説
これも仕組みは単純ですね。
スイッチで条件分岐が入っているのは、既に追跡者が出現している場合を考えてです。
一見コモンイベントで作ったほうが楽そうに思えますが、もしそうやって汎用処理を作るとなると
追跡者の出てくる位置や追跡者のイベントIDなども細かく決めていく必要があるので逆に不便です。
(これが例えば大量に出現処理を作るシンボルエンカウントとかだとコモンで組むメリットがありますが)
また、「演出」を担当するのはこの手動出現や消去の処理を加えたイベントで行うのがベストです。
例えば選択肢を間違えると追跡者が出現する、模様のある床を踏むと一定確率で出現する
背後からゆっくりと追跡者が近付いてきて・・・さあ逃げろ!等々、ツクラーの腕の見せ所ですね。

マップ移動(追跡判定)
お次はマップ移動をさせるイベントに、移動前に追跡判定を加えます。
条件分岐:スイッチ「追跡者出現」がon
  変数の操作:変数A = プレイヤーのマップX
  変数の操作:変数B = プレイヤーのマップY
  変数の操作:変数C = 追跡者のマップX
  変数の操作:変数D = 追跡者のマップY

  変数の操作:変数A -= 変数C
  条件分岐:変数Aが0未満
    変数の操作:変数A *= -1
  変数の操作:変数B -= 変数D
  条件分岐:変数Bが0未満
    変数の操作:変数B *= -1

  変数の操作:変数A += 変数B
  条件分岐:変数Aが10未満
    スイッチの操作:スイッチ「追跡者準備」をonにする
    変数の操作:変数「出現カウント」 = 変数A
    変数の操作:変数「出現方向」 = ○○
  スイッチの操作:スイッチ「追跡者出現」をoffにする

それ以外の場合
  条件分岐:スイッチ「追跡者準備」がon
    条件分岐:変数「出現方向」が○○と同じ
      スイッチの操作:スイッチ「追跡者出現」をonにする
  スイッチの操作:スイッチ「追跡者準備」をoffにする
変数「出現方向」
その前に、今回使う変数「出現方向」 にはルールを決めておきます。
マップA←(1)→マップB←(2)→マップC←(1)→マップD
・マップの移動時に番号を代入する
・対応する移動イベントは同じ番号
・1つのマップの移動イベントは全て違う番号
これはツクール本来のルールではなく、自分でイベントが組みやすいように決めるルールです。
この変数の目的はどこの移動イベントから移動してきたかを把握することです。

このイベントの解説
さてさて、本題のマップを移動して追跡してくるための処理。
その片方がこのマップ移動イベントに仕込む処理です。
いやはや変数操作と条件分岐の洪水ですね、しかし繰り返しますがいたって単純な内容です。
まず一段落目はもう説明は不要でしょうね、出現してるか分岐して変数に情報を入れてます。
二段落目は、マップX同士を引き算することでその差を求めています。
実際にやってみると分かりますが、5マス離れていれば計算結果は5か-5になるはずです。
0未満(つまりマイナス)の場合には-1を掛けてマイナスを消してしまいます。絶対値を求めるとも言います。
これをマップYに関しても行っています。整理するとこの時点で
変数Aには「X方向に何マス離れているか」変数Bには「Y方向に何マス離れているか」の数が入ります。
そして三段落目ですが、まず2つを足して、合計が10未満なら追跡を続行します。
(余談ですが斜め移動がありの場合は2つのうち大きいほうを比べると自然になります)
具体的な処理は次のイベントが行うので、ここではフラグとなるスイッチと変数を設定するだけです。
10以上ならフラグが設定されないので追跡はここで終了するというわけです。
どちらの場合でもスイッチ「追跡者出現」はoffにしたいので、分岐の終わりに追加します。
四段落目は追跡者が出現していない場合の条件分岐です。
まだ出現はしていないが追跡は続いている場合で、元のマップに戻る場合はいきなり出現状態になります。
それ以外のマップに移動した場合は追跡フラグが解除されるので逃げ切ったということになります。

マップ間追跡イベント
トリガーはお馴染みの並列処理、条件はスイッチ「追跡者準備」
マップイベントで各マップに1つ置きます。
条件分岐:スイッチ「追跡者出現」がon
  スイッチ「追跡者準備」をoffにする
条件分岐:変数「出現カウント」が0以下
  条件分岐:変数「出現方向」が○○
    イベントの位置設定:○○に対応する位置を設定
  条件分岐:変数「出現方向」が○○
    ……
  スイッチの操作:スイッチ「追跡者出現」をonにする
  スイッチの操作:スイッチ「追跡者準備」をoffにする
変数の操作:変数「出現カウント」 -= 1
ウェイト:28F
このイベントの解説
基本的な動作は並列処理で30フレーム毎に、変数「出現カウント」をチェックしながら減らしていきます。
そして変数「出現カウント」が0以下になったら追跡者を出現させます。
このとき、変数「出現方向」を利用して移動前のマップから追跡者が出現するように位置を調節します。
変数「出現カウント」はマップ移動のイベントで追跡者との距離を代入しました。
これが1マス30F、つまり半秒の猶予となるわけですね。
それから、最初に入っている条件分岐はカウントしている途中で
(他のイベントによって)追跡者が出現する可能性を考えていれてあります。

まとめ
ここまでお疲れ様でした~。
いかがでしたか、すんなり理解できたでしょうか?
全体の流れとしては
・追いかけてくる本体
・それを呼び出す、追い払う処理
・マップを越えて追いかけてくるかの判定
・マップを越えて追いかけてくるの実行
それぞれのイベントがスイッチと変数によって連携しているというものです。
そして、ツクールのマップイベントはあくまでマップ内だけしか動けないわけですが
全てのマップに用意したマップイベントを出入口の位置から出現させることで
あたかもマップ移動してきたように見せるというのが今回のテクニックの原点となっています。

拍手[15回]

PR
-->
Responses4 Responses
1.参考にしていただいております ユゥさん (2013/09/16 13:03) [Edit]

参考にさせていただきましたが、いい感じになったんですけど、追跡者が2体出てきたりするので、僕の入力ミスだと思いますが、よろしければ、このイベントのスクリーンショットお願いします><!!

Re:参考にしていただいております 奈々(なな) (2013/09/16 21:30)

>ユゥさん
こんにちは。
文章を読む限り入力ミスよりも、もっと根本的な間違いな気がします。

追跡者が2体出てきたりする、ということですが
記事の中にあるように追跡者本体は「各マップに1つ」としていますので
普通は入力ミスでも2体出てくることはありえません。
まずは、そのマップに追跡者本体が複数置かれていないかを確認して下さい。

2.No Title ユゥさん (2013/09/16 23:38) [Edit]

ありがとうございます!無事成功しました!
すごく感謝です!!
これでホラーゲーム制作ができます!

ほんとうにありがとうございます!

3.No Title ユゥさん (2013/09/17 17:53) [Edit]

引き続きすいません(´;ω;`)
マップ移動したら、追跡者のイベント自体(追跡者本体)が置かれているところに出現してしまうんです。
なにを間違えているんでしょうか?

Re:No Title 奈々(なな) (2013/09/18 04:39)

それは仕様です。
この作例では、追跡者が出現するパターンは3つです。
・イベントで出現(「手動出現」が担当)
・違うマップから追ってきた(「マップ間追跡イベント」が担当)
・追跡者がいるマップに戻った(「マップ移動(追跡判定)」が担当)

上2つは担当イベントが出現判定の際に
同時にイベントの位置指定で出現地点を設定しています。
3つ目は「それ以外の場合~」以降が処理していますが
移動先のマップのイベントは動かせないため、イベントの位置指定が入ってません。
もしそれをしたいなら次のような処理を加えます。

1、
「マップ移動(追跡判定)」でスイッチ「追跡者出現」をonにするときに
スイッチ「出戻り」をonにして、変数「出戻り方角」に適当な数値を入れる。

2、
場所移動のイベントでは、フェードインはしない(真っ暗にする)

3、
マップに「出戻りがonが条件で、自動実行のイベント」を作る。
内容は
条件分岐:変数「出戻り方角」が1の場合
  イベントの位置設定:「追跡者本体」の位置を調節
条件分岐:変数「出戻り方角」が2の場合
  イベントの位置設定:「追跡者本体」の位置を調節
……
スイッチ「出戻り」をoff
フェードイン


変数に入れる数値は単なる識別用で
追跡者をどの位置にするかを決めるためのものです。

6.返信 奈々さん (2013/09/18 05:46) [Edit]

>うにさん
はじめまして。初心者の方に見て頂けるのは嬉しいです。
細かくないですよ(笑)ある意味、このイベントの肝です。
この記事における○○というのは変数「出現方向」の中身のことです。
解説は変数「出現方向」の項目に書いています。

つまり実際にイベントを組めば○○は、ある数字になっています。

マップ移動(追跡判定)は
イベント毎に数字が違います。

マップ間追跡イベントは
そのマップにある追跡判定の数字で条件分岐します。

なので具体的に1とか2という数字で表記せず
○○の部分は変わるんだよ、という書き方をしています。

  • お名前
  • タイトル
  • メールアドレス
  • URL
  • パスワード

ブログ内検索

アーカイブ

最新コメント

[01/20 NONAME]
[01/16 NONAME]
[12/30 NONAME]
[12/13 NONAME]
[12/01 NONAME]

プロフィール

バナー

HN:奈々(なな)
RPGツクールVXAceを中心に製作を行っています。 スクリプト、イラスト、ドット絵など広くちょこちょこ手を出していますので、 できる範囲で他のツクーラーさんのお手伝いができたらなと思っています。