ArmA訓練所 2007/10/08 |
ArmAではスクリプトコマンドを使ってエディターでは出来ないような様々なことが実現可能です。
これまでに勉強した内容で実際にスクリプトコマンドを使ってみましょう。
ここではスクリプトコマンドと組み合わせるトリガーの基本的な使い方を説明したいと思います。
トリガーってなんだろう?とはじめは思うかもしれません。
トリガーはある条件を満たしたときに何らかの処理をするために使います。
例えばユニットの死亡を条件にミッションを終了させるといったことが可能です。
トリガーにはトリガーだけが持つ機能と、スクリプトコマンドを実行させる機能があります。
ここではスクリプトコマンドを実行する機能を中心に基本的な使い方を見ていきます。
トリガーの持つ機能の詳細はミッションエディターの使い方トリガーモード編を参照してください。
はじめに覚えるのはトリガーの範囲に入ったときにスクリプトコマンドを実行することです。
これは特定の地点にたどり着いたことや、何かしらの領域に侵入したことを条件にスクリプトコマンドを実行します。
エディターで実際に試しながら覚えていきましょう。
エディターでSahrani島を選び、空港付近で練習してみましょう。
まずプレイヤーユニットを配置します。
プレイヤーユニットを配置したら、プレイヤーの側にトリガーを配置します。
ここではプレイヤーがBLUFORの兵士なので、BLUFORの兵士に反応させるためにActivationをBLUFORに書き換えておきます。
ここでOKを押すと次のような円で囲まれた旗のマークが表示されます。
この旗のマークがトリガーで、周りの青い色をした円がトリガーの範囲です。
初期状態では直径50mの正円となっています。
漠然とした範囲であれば円が適していますが、マラソンのスタートラインやゴールラインが曲線では困りますよね。
直線的な範囲を指定するときはトリガーの範囲を方形にします。
円形か方形かを変更するには、上部にあるEllipse(円形)からRectangle(方形)に変更します。
すると次のように50m四方のトリガーになります。
このままでは広すぎるので、Axisでトリガーの範囲を調整します。
衛星写真で見るとこんな感じになります。
ここでOn Act欄に「hint "enter the trigger"」と入力してみましょう。
hintコマンドが画面左上にメッセージを表示するコマンドで、トリガーやスクリプトコマンドの確認に便利です。
Previewで実際に滑走路上を歩いてみて、hintメッセージが表示されれば動作確認はOKです。
無事にトリガーが動作しました。
このhintコマンドを目的のコマンドに置き換えるだけで、ある範囲に入ったら処理をするということが可能になります。
敵の陣地に侵入したら目標の一つを達成するとか、敵の倉庫にはいると敵の極秘情報を入手したという設定に応用できると思います。
こんどは逆の条件を考えてみましょう。
ある範囲に入ることもあれば、ある範囲から出ることで処理を実行したい場面もあります。
その場合には次のようにプレイヤーを囲むように範囲を設定し、PresentをNot presentに変更します。
On Act欄に「hint "get out the trigger"」と書いておきます。
地図上ではこのような配置にしておきます。
トリガーの範囲から出るとメッセージが表示されると思います。
この処理はミッションの活動範囲を限定する場合や、人質の脱走禁止エリアの設定などによく使われます。
これまでのトリガーは範囲から出たり入ったりしたときに一度しか実行されませんでした。
ここでは出たり入ったりする度に何度でも動作する方法を紹介します。
まず、次のように範囲を適当に設定し、OnceをRepeatedlyに変更し、Presentを選んでおきます。
Activationはトリガーに出入りするユニットがBLUFORならそれを選択します。
On Act欄とOn Dea欄にhintコマンドを書いておきます。
Presentのトリガーであれば、On Act欄はトリガーに入ったとき、On Dea欄は出たときの処理になります。
地図上では次のような配置にしてみます。
トリガーに入った状態ではOn Act欄で設定した処理がなされます。
トリガーから出るとOn Dea欄で設定した処理がなされます。
これから再びトリガーに入ったり出たりを繰り返しても同様に何度も処理が行われます。
繰り返し処理するときはRepeatedlyにしておくことが重要です。
On Act欄だけを設定し、On Dea欄を設定しなくてもかまいません。
繰り返し処理はある地点にいると武器や燃料を自動補給する処理などに使われます。
上で述べたのはトリガーの範囲を利用し、出たり入ったりした場合でした。
今度はトリガーの範囲とは関係なく、特定の条件でトリガーに書いたスクリプトコマンドを実行する方法を紹介します。
まず、プレイヤーユニットを配置します。ここではBLUFORの兵士にします。
次にtarouと名前を付けた市民を用意します。
名前を付けるにはName欄に名前を書き込むだけです。
次に、Emptyの戦車を一台用意します。
こちらにもtankという名前を付けておきます。
トリガーを用意します。
今回のトリガーは範囲が必要ないのでAxisをそれぞれ0にします。(0にしなくても問題はありませんが、エディターの周りが見づらくなります)
また、Activation欄も今回は必要ないのでNoneにしておきます。
Condition欄を「this」から「not alive tarou」に書き換えます。
On Act欄に「tank setDamage 1」と書いておきます。
地図上では次のように配置しました。
市民(tarou)と戦車(tank)が置いてあります。
ここで市民を撃ってみるとどうなるでしょうか。
次のように戦車が爆発します。
このように、トリガーの範囲ではなく、スクリプトコマンドを使った条件を指定することも可能です。
今回のようにユニットの死亡を条件にしたり、武器を持っていないことを条件にしたりと様々なことが出来ます。
条件とその処理を組み合わせることで様々な処理に応用が出来ます。