PORTAL2 テストチェンバー製作7

前回の記録はここから参照。

今回は、

  • ハードライトブリッジ
  • トラクタービーム
  • パネル

の設置方法を記録する。



ハードライトブリッジ


[ 概要 ]
ハードライトブリッジは、太陽光によって生成された光の橋である。プレイヤーはこの上を歩くことができる。キューブやタレットなどはこの上に置くことができる。さらに、ポータルを通すことができる。また、これを垂直に照射することで、タレットの弾丸を防ぐ盾として使用することもできる。

[ 設置方法 ]
設置方法はとても簡単で、"prop_wall_projector"を配置するだけ。パラメータにも難しい項目はない。

[ パラメータ ]
- Start Enabled
ゲーム開始時から照射するときはYesに設定。
- Disable Placement Helper
照射位置の補助を無効化するときはYesに設定。



トラクタービーム


[ 概要 ]
トラクタービームはその名の通り、プレイヤーを牽引するビーム。ビームに触れると、ビーム中央まで引き込まれてから牽引される。ビームに牽引されている状態なら落下することはない。またポータルを通すことができる。キューブやタレットなども、プレイヤー同様、牽引される。青色のビームが照射されているときは照射装置から離れていく方向へ牽引され、オレンジ色のビームのときは照射装置へ引き寄せられる。

[ 設置方法 ]
設置方法は簡単で"prop_tractor_beam"を設置し、それに重ねてブラシを配置するだけ。ブラシのテクスチャは
toots/toolsplayerclip
を使用する。
ブラシを設置する理由は、プレイヤーが"prop_tractor_beam"をすり抜けてしまうため。プレイヤーの落下防止用にブラシを配置するのだ。テクスチャのPlayerClipは、プレイヤーだけ通行止めにする特殊なテクスチャ。ここは通って欲しくないという場所や、すり抜けやそのほかの不慮の事故を防止する時に使うとよい。

[ パラメータ ]
- Start Enabled
ゲーム開始時から照射するときはYesに設定。
- Disable Placement Helper
照射位置の補助を無効化するときはYesに設定。
- Linear Force
牽引力設定。-250~250で指定。250が青色ビーム。
-250がオレンジ色ビーム。トリガー出力設定ではSetLinearForceでParameterに値を入力。


パネル


[ 概要 ]
パネルという見出しだが、これはパネル(ブラシ)可動アームのセットの紹介である。ここから、アームで動くパネル(可動パネル)を実現する手段を紹介する。PORTAL2では、特に後半のテストチェンバーに、多く用いられているのが伺えた。アームはいくつかの種類があり、それぞれで形状と動き方(シークエンス)が異なる。1つのアームに豊富な種類のシークエンスが存在するので、思い描くテストチェンバーを実現できる可能性は高い。

[ 設置方法 ]
- Step.1
"prop_dynamic"を以下の設定で設置する。
Property NameValue
Namepanel_arm1
World Modelmodels/anim_wp/room_transform/
arm64x64_interior.mdl
HoldAnimationYes
- Step.2
ブラシをアームのパネルの大きさ(64Lx64Wx4H)に合わせて作成する。作成したブラシはパネルの上にぴたりと重ねて配置する(画像参照)。このブラシをエンティティ化して"func_brush"にする。"func_brush"のプロパティ設定は以下の通りである。
Property NameValue
Namepanel1
Parentpanel_arm1
Parent設定によりブラシはParentに入力されたエンティティ名に準拠した処理を行うようになる。つまり、Step.1で配置したアームの名前を、ブラシのParentに設定することでブラシは、アームに合わせて動くようになるのだ。しかし、Parentを設定しただけではプログラム上設定不十分だということに注意。動きは合わせられても、アームのどの部分を基準に動きを合わせるのか?という設定が欠けているのだ。
- Step.3
そこで、アームの基準点をパネルとなるブラシに設定する。しかし"func_brush"自体にそんな設定項目はない。どこにあるかというと、別のエンティティ(トリガー)の出力設定の項目にあるのだ。そこで今回は"logic_auto"の力を借りる。
これはゲーム開始時に自動的にトリガーを引いてくれるエンティティ。このトリガーに設定すればよい。Outputsタブ内でAdd...をクリックして次の出力設定を追加する。
My OutputOnMapSpawn
Target Entitypanel1
Target InputSetParentAttachmentMaintainOffset
Parameterpanel_attach
Delay0.00
Only OnceYes
これで、ゲーム開始と同時にパネルとなるブラシにアームのpanel_attachを基準にしなさい、と出力するようになるのだ。さぁ、あとはアームにお好みのシークエンスを設定してやれば、可動パネルの完成となる。
- Step.4
今回はトリガーに"logic_relay"を使う。このエンティティ宛てにTriggerを出力すると、このエンティティに設定してあるすべての出力設定を一斉に出力してくれる。出力設定専門のエンティティだと思えばよい。プロパティのNameはarm_relay1に設定しよう。次にOutputタブ内に以下の出力設定を追加しよう。
My OutputOnTrigger
Target Entitypanel_arm1
Target InputSetAnimation
Parameter128_out_straight
Delay0.00
Only OnceYes
ここでは128_out_straightというシークエンスを設定した。これで、"logic_relay"にTriggerが入力されると、アームがシークエンス128_out_straightで動き、同時にそのアームの動きに合わせてパネルも動く。なお、シークエンスはアームプロパティのModelタブ内のプルダウンメニューを参照すると良い。選択すればエディタ画面上で動きを確認できる。
- Step.5
"logic_relay"への入力を設定する。"trigger_once"を通過することで出力するようにしよう。"trigger_once"の出力に次の設定を追加する。
My OutputOnTrigger
Target Entityarm_relay1
Target InputTrigger
Parameter<none>
Delay0.00
Only OnceYes
アームとパネルがひとつだけしか設置されていないので、わざわざトリガーの出力を"logic_relay"経由でアームに出力しているのは現状無意味になっているのだが、仮に様々な出力を1つのトリガーで実現したい場合、たとえばドアを閉めてBGMを流し同時に複数の可動パネルを動かすといった処理を出力する場合、"logic_relay"を介して出力すれば、それらすべてを統括できるので便利だ。万一それら複数の出力をするトリガーを変更することになっても、"logic_relay"に出力設定が記されていたなら、変更は簡単になることはお分かりいただけるだろう。トリガーに直接出力を設定していたら、そのすべてを変更先トリガーにコピーしなければいけなくなるのだから。


外部リンク[英語サイト]
アームの一覧表
ページ内の"List of panels attachments"を参照。アームの種類と、SetParentAttachmentMaintainOffsetパラメータがそれぞれ載っている。N/Aは未定値(値なし)の意味。またAnimated Noはシークエンスがないことを意味する。



今回で、このPORTAL2テストチェンバー製作の記録群は一旦終了。おまけとして、細かな機能も紹介したかったのだがこちらの勝手な都合で省かせて頂く。申し訳ない。
しかし、気付きや発見といった動向があれば追って記録する予定。また、質問や要望などをコメントやフィードバックなど何らかの手段で連絡して頂ければ、可能な限り調査して記録したい意思である。
3523316907946889851 http://www.storange.jp/2011/09/portal2-7.html http://www.storange.jp/2011/09/portal2-7.html PORTAL2 テストチェンバー製作7 2011-09-30T00:20:00+09:00 http://www.storange.jp/2011/09/portal2-7.html Hideyuki Tabata 200 200 72 72