bobbyjoe's MOD Memo

KFED_ScriptedTriggersTutorial_001

最終更新:

bobbyjoe

- view
管理者のみ編集可

Scripted Triggerを使った、触れると即死する移動オブジェクトの作り方

訂正

 以下の文は調査不足によるもので、すべて無駄な手間です。
 実際にはMoverを作成後、右クリックからMover Propertiesを開き、Mover項目の中にあるMoverEncroachTypeを「ME_CrushWhenEncroach」に指定するだけで、Moverの移動を妨害しようとしたものを轢き潰す設定にすることができます。
ScriptedTrigger自体は他に使い道がありそうなので、本文は削除せず残しておきます。
(2008/11/08追記)



はじめに

 UnrealED 3.0を使って、接触したキャラクターを即死させる移動オブジェクト(Mover)を作る方法の一例を解説します。これを使えば、轢かれる恐れのある高速で走行する列車などのユニークなギミックをマップに取り入れることができるかもしれません。非常に簡単なギミックですが、私自身仕組みを知るまでに結構苦労したので、半分は自分が忘れないためのメモとして、この文章をしたためた次第です。
 私は例として、乗ると死亡する昇降リフトを作成しました。下記の画像はそのリフトを作成した際のものですが、実際に作成するMoverはどんなものでもかまいません。
 また、私がUnrealEDについての知識がほとんどないにもかかわらず、解説を書くなどという無謀な挑戦をしているために、内容は非常に簡素かつ「俺流」なものになっております。どうぞご了承ください。
 それでは、つたない解説ですがしばらくお付き合いくださいませ。



仕組み

 ここで紹介するMoverが、どのような仕組みで動いているのかを、私自身もわかっていないながらに説明します。仕組みはどうあれやり方だけが知りたい、という方はこの項目を飛ばして読み進めてください。
 この即死Moverギミックは、基本となるMoverと、Moverにくっついて一緒に移動するTrigger、Triggerによって起動されるイベントの効果を定義するScriptedTriggerの三つの要素で作られています。
 Moverとは、Unreal Engineで使われる移動オブジェクトのことです。
 Triggerというのはその名の通り「引き金」で、プレイヤーがこのTriggerに対して何らかのアクション(乗る、押す、調べるなど)を行うことで、他のイベントを作動させる効果があります。ボタンを押すと扉が開いたり、ある床に乗ると落とし穴が開くといったイベントの、「ボタン」や「ある地点の床」がこのTriggerにあたります。
 ScriptedTriggerは、私にもよくわからないのですが、Unreal Engineにあらかじめ用意されているある種の行動を、トリガーによって引き起こす要素のようです。上記の例であれば、ボタンが押されることによって開く「ドア」や床に乗ることで開く「落とし穴」にあたります。しかしUnreal Editorでは、こうした動きのあるギミックを専用に管理する優秀なトリガーがすでに用意されていますので、ScriptedTriggerはもっと見えない部分、たとえばあるタイミングで「音を鳴らし」たり、今回のように触れることで「ダメージを与え」たりする用途が主となるようです。
 さて、今回の即死Moverギミックは非常に単純な代物で、Moverである上下に移動するリフトを用意し、当たり判定のあるTriggerをリフトと一緒に移動させ、Triggerに触れると触れたものを即死させるScriptedTriggerが作動する、という仕組みになっています。どこからリフトに乗っても必ず死んでしまうという、嫌がらせ以外の何物でもない迷惑なギミックですね。
 次項では、いよいよ実際の作成例を紹介します。



実際の作成例

ここでは、すでに稼動しているMoverがあるものとして解説をすすめています。Moverそのものの作り方はとても幅広く、様々な移動のさせ方が可能なのですが、逐次解説するとテキストが膨大な量になってしまいますので、別の機会に譲りたいと思います。
  • Moverの設定
 まずMoverを右クリックし、メニューから一番上のMover Propertiesを開きます。ここでMoverの設定を行うのですが、重要なのは一箇所のみです。

 Event項目の下にあるTagという箇所がそれです。TagとはこのMoverを識別する固有の名前のようなもので、後述するTriggerをMoverに関連付けて一緒に移動させる作業で重要になってきます。わかりやすい名前をつけておきましょう。
  • Triggerの作成・設定
 続いてTriggerの作成に入ります。Actor Class Browserを開き、Triggersの中にあるTriggerを選択します。
imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (height=360title=test)
 3Dビューのどこでもいいので右クリックして、Add Trigger Hereをクリックすると、レバースイッチのようなアイコンのTriggerが新規に作成されます。このギミックでの「即死」の当たり判定は、Triggerに依存していますので、作成したTriggerをリフトと重なるように配置しましょう。
imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (height=360title=test)
 Moverの設定のときと同じように、Triggerを右クリックして出てきたメニューからTrigger Propertiesを選択します。ここでは触れるだけで起動するタイプのTriggerを作成する予定なので、デフォルトからそれほど大きく変更する必要はありません。
 実際に設定するのはEvents以下にあるEvent部分、Movement以下にあるAttachTag部分、そして場合によってはCollision以下にあるCollisionHeightとCollisionRadius部分になります。
 Eventは、このTriggerによって起動させるイベントの名称を意味しています。わかりやすく、固有の名前を入力します。

 Movementの下層にあるAttachTagは、このTriggerが指定したTagのオブジェクトにくっついて移動することを表しています。ここでは、MoverにつけたTagを入力します。

 CollisionとはTriggerの当たり判定のことです。CollisionHeightとCollisionRadiusはそれぞれ当たり判定の高さ、広さを表しています。Moverが大きすぎてうまく触れたものを即死させられなかったり、逆に小さすぎて触れるほど近づかない内に即死させてしまったりした場合などに、この値を調節します。

  • ScriptedTriggerの作成・設定
 最後にScriptedTriggerを作成します。Actor Class Browserから、Keypoints、AIScript、ScriptedSequenceと項目を開いていき、ScriptedTriggerを選択します。
imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (height=360title=test)
 Triggerを作成したときと同じ要領で3Dビューを右クリックし、Add ScriptedTrigger HereをクリックしてScriptedTriggerを新規作成します。ScriptedTriggerの当たり判定はギミックに影響しないので、ScriptedTriggerはマップ上のどこに配置しても構いません。
imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (height=360title=test)
 ScriptedTrigger Propertiesを開き、項目を設定します。ここから私も内容を理解しきっておらず、あやふやで複雑な場面が続きます。
 AIScript項目を開きます。Actionsの右にあるAddボタンを押すと、Actionsの下層に数字の項目が新しく開きます。さらに下層にNewと書かれた項目ができているはずです。ここが、実際に発生するイベントを定義する部分になります。数字は実行される順番を、画面ではNewの右にある大文字のACTIONから始まる項目が、起こるイベントの効果を表しています。
imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (height=360title=test)
 ここでは、「トリガーが起動するのを待ち」「起動されたら触れたものを即死させ」「イベントを処理したら再びトリガーを待機する状態へ戻る」という、三つの動作を持たせます。
 まず番号0の項目から、大文字のACTIONと書かれた部分をクリックすると、プルダウンメニューが開きます。一覧からAction_WAITFOREVENTを選択し、メニューの右のNewボタンをクリックします。これで、最初に「イベントを待つ」という動作を定義することができました。

 ここでさらに下層に、ExternalEventという項目ができているはずです。この部分でScriptedTriggerがどのイベントを待つのかを決定します。ここでは、先ほどTriggerを設定した際に、Event部分で入力したイベント名を入力します。

 次の動作を作るため、再びActionsの右にあるAddボタンを押し、動作を追加します。番号1の項目では、Action_KILLINSTIGATORを選択してください。この動作で、トリガーに触れた対象を殺すことができます。この動作の下層にはDamageTypeという項目が生成され、ここでは対象にどんなダメージを与えるのかを決定することができます。今回はデフォルトのままです。

 最後の動作を入力するため、Addボタンを再度クリックします。次の番号2の動作には、Action_GOTOACTIONを入力します。この動作は、指定した番号の動作へ戻るという意味です。下層に生成されるActionNumber項目で、どの動作へ戻るのかを決定します。デフォルトでは0番になっており、何度でも繰り返しScriptedTriggerが起動することになります。このギミックにはちょうどいい設定ですので、このままにします。

  • テスト
 これで設定は完了です。マップを出力し、セーブして、実際にテストしてみましょう。
人気記事ランキング
目安箱バナー