ドアとリスポンフィルター

Last-modified: 2009-11-24 (火) 10:54:00

ドアとリスポンフィルター

ドアを作るためにはエンティティを理解しないといけません。
ドアは大きく分けて二つに分けることができます。
一つは公式マップでよくあるプロップモデルを使ったドア。もう一つは手抜きタイプのブラシを使ったドア。どちらも長所短所があるので使い分けるといいでしょう。
今回の説明はプロップモデルです。
door1.jpg

以下のエンティティが必要です。
door2.jpg

ドア本体

ドア本体はブラシで作ります。
まずはワールドブラシでドアの形をマップ上に作り、そのワールドブラシを選択してCTRL+Tまたは tools > Tie to Entity をクリックするとそのブラシがdetil entityになります。ここからこのclassを変更して func_doorにします。後は以下のプロパティを設定してください。

プロップタイプのドアの場合はNoDrowで作ります。

このドアが開くのに連動してプロップモデルもparentプロパティを設定してドアのプロップモデルを上下させます。詳しくはドアモデルの図を参照
ブラシタイプの場合はそれにあったテキスチャーを張りましょう。
1からdoorのエンティティを作るとFlagのTouch openにチェックが入ってしまいます。これにチェックが入っているとそのドア本体にさわると開く状態になってしまうので、チェックを外すといいでしょう。

主なプロパティ

  • Name :ドア本体の名前です。この名前をドアトリガーで指定します。
  • Speed :ドアの開閉時のスピードです。1000もあればいいでしょう。
  • Delay Before Reset :ドアが何秒後に閉まるかです。この値が-1の場合閉まらなくなります。ただし、ドアトリガーに離れると閉まるという命令を出しておくと閉まります。今回は自動で閉まりませんので-1になっています。0から作ると勝手に閉まってしまい悩むことがあります。
  • Spawn Position :マップが読み込まれたときの状態です。開いている場合はopen 閉まってるときはcloseです。
  • Move Direction :どこの方向に閉まるかです。上下に関してはup downと選択できるので簡単です。

ちなみに簡単なブラシドアを作る場合はこのエンティティだけで作ることが出来ます。ブラシのテキスチャーは適当なドアのタイプを選んでください。 flagのTouch Openにチェックを入れることにより触ると開くドアになります。また Delay Before Reset を3秒ほどにすれば開いてから3秒で再び閉まることになります。簡単ですが、開くときにプレイヤーが挟まると閉じなかったり、逆に開かなかったり、使いにくいドアになることが多いです。

door_hontai1.jpg

ドアトリガー

トリガーテキスチャーを使ってtrigger_multipleエンティティを設定しましょう。ここのoutputに触れるとドア本体を開き、触れるのをやめると閉じるという命令を出します。

主なプロパティ

  • Parent: このトリガーと連動する元(親)になります。今回は空白なので設定していませんが、設定してあるとこのトリガー自体が何かと一緒に動く、動くドアなどが出来ます。
  • Filter Name : フィルターはそのトリガーを使えるチームを選択します。ただし、このFilterを使うには別途Filterのエンティティを2つ(赤、青)マップのどこかに設置する必要があります。ほとんどのマップにあるので探してみるといいでしょう。

主なOUTPUT

  • OnStartTouchAll このtriggetエリアに触れると命令を出します。今回はドア本体の名前を指定してOpen命令を出しています。このトリガーに触れたらドア本体を開きなさいという意味になります。
  • OnEndTouchAll このtriggetエリアから離れると命令を出します。OPENと逆で閉まります。

ちなみに一番下のFLAG画面にあるチェックにcliantと入っていますが、これはプレイヤーのクライアントという意味になり、プレイヤーがトリガーに反応するということです。
NPCsはBOTという意味でなく、NPCになります。BOTはプレイヤー扱いです。
またPhysices Objectsは物理プロップや物理モデルなどの動く物体(サッカーマップのボールとか)が入ると反応するトリガーになります。 Physices Debrisはエンジ二アの建築物の破片らしいです。(自分で確認しただけで間違いかもしれません。他にあるかもしれません) HL2のMODなのでバギーなどのトリガーもあるようですが、使えないと思います。(未確認)

doortrigger1.jpg

ドアモデル

プロップモデルのドアです。このドアは見た目だけで動くシステムはないのでドアエンティティに連動させると動くようになります。このモデルの中には巻きドアという、上に単純にスライドするのではないタイプもありますのでその際は、アニメーションさせる必要があります。(WELLのドアなど)この場合は別途説明

主なプロパティ

  • Name :このプロップの名前です。ターゲットなどで名前を指定する場合はここの名前を指定します
  • Parent :このトリガーと連動する元(親)になります。今回はドア本体の名前を指定していますのでドア本体が上に開くと一緒にこのプロップも上に開くようになります。
  • World Model :このプロップのモデル名です。ブラウズボタンを押すとプロップ選択画面が出ますので好きなプロップを選べます。
  • Skin :スキンは形は同じだけで色が違う場合にここだけ変更すれば変わるような設定です。たとえばCPの下の台座など赤チームの場合は赤色、青チームの場合は青などです。
  • Collisions solid :ここは当たり判定になります。Use Vphysicsにするとそのモデルに設定してある当たり判定を使います。 boxを選択するとこのプロップの最大幅の四角いボックスが当たり判定になります。no solidにすると当たり判定はありません。ただし問題があり、Use Vphysicsにしてもあたり判定モデルが存在しない場合は通り抜けできますし、 boxは挙動がおかしいときが多いです。また下記のStart Disabledでプロップモデルを隠しても、Use Vphysicsにしているとあたり判定が残ってしまう場合があります。このような場合はno solidにして、ここにfunc_brushというエンティティを使い、このburshに見えないToolsblockbulletテキスチャー を張ってこのburashをStart Disabledで隠してしまうといいでしょう。
  • Start Disabled :このプロパティはいろいろなエンティティに設定できます。これをyesにするとそのエンティティは隠されます。動作なども作動しなくなり、たとえばドアトリガーを隠すことにより、開かなくなったりします。通常はnoですが使いこなすといろいろな動作をする面白いプロパティです。
  • Start Fade Dist :このエンティティは広いマップなどで、コストダウンのためある一定以上離れた場合表示しないようにするプロパティです。この値はフェードアウトする距離。下のEnd Fade Distは逆です。
  • End Fade Dist :上と説明は同じです。
    door_prop.jpg

装飾

装飾はディティールエンティティで作りましょう。ドアのふちや、サッシなどいろいろ必要なものはあります。これを細かく作ればマップのディティール度があがるでしょう。懲りすぎるとマップのコストが上がります。ほどほどに

リスポンフィルター

リスポンフィルターはリスポンドアにつける相手チームがはいってこないようにするためのフィルターです。リスポンルームの名前を指定してください。チームのフィルターをするものではないです

パーツを重ねる。

この5つのパーツを重ねてください。
まずは装飾を設置します。そしてその上にpropモデルを重ねます。ゲーム中に見えるのはこの二つだけになりますので、慎重に設置しましょう。
その後ドアの本体をpropに重ねるように設置。
triggerは一定方向からだけ開きたい場合は、内側にだけ触れれるように設置。どちらからも開きたい場合はドアの中心におきます。
フィルターはドアの内側に設置。

これでドアは完成です。

door1.jpg

簡易ドアの作成方法

簡易ドアは上記のドア本体だけで作ることが出来る簡単なドアです。
ブラシにはnoDrowのツールマテリアルではなくて、ドアにあったテキスチャーを張りましょう。
FlagのTouch openにチェックが入っているとそのドアに触れるだけで開くドアが作れます。
簡単とはいえこれではいろいろ問題が出てくるので、trggerくらいは作ったほうがいいと思います。

アニメーションプロップでのドアの作成方法

wellのドアや巻きドアなどアニメーションタイプのドアを使いたい場合
prop_dynamicには移動するだけでなく、アニメーション情報を持つモデルも存在します。エンティティのメニューにあるmodelタブをクリックすると表示されるsequenceという項目を変更すると 3Dview上のモデルがアニメーションします。通常はidle(アイドル状態)になっています。しかしここを変更しても実際のゲーム上では変わりません。ゲーム上で変更したい場合はOUTPUTで命令をだしてやる必要があります。SetAnimationでこのsequenceのテキストを指定するとそのタイミングでアニメーションします。ドアの場合はopenとcloseというアニメーションモデルがありますので、ドア本体が上に上がったら連動して SetAnimationをopenにしてやれば開いた状態になり、逆にドア本体が下がったらSetAnimationをcloseにすれば閉まった状態になります。