第5回 ドアの作り方

第5回 ドアの作り方

time 2016/08/29

第5回 ドアの作り方

ドアの作り方

(第5回は元からあったページを作り方に編成しなおしました)

ドアとは

ドアとはゲーム中に存在する近づくと開くドア、さわると開くドア、セットアップが終わると開くドアなど、 開く動作をする動きや視界を封じる壁です。


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

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

ドア本体

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

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

NoDrowテキスチャーとは何も書かれないテキスチャーです。このテキスチャーは普段ゲームの中では 見えないので気付かないとは思いますが、マップ作成では良く使われます。ブラシ同士が重なり合ったような ゲーム中では見えないところはこのブラシにすると余分なポリゴンを書かなくなりますのでその分軽くなります。 本来はこのブラシで形を作ってからテキスチャーを貼り付けていく作業をするとFPSが上がるマップになりやすいです。

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

主なプロパティ

    • Name

 

    • ドア本体の名前です。この名前をドアトリガーで指定します。

    • Speed

ドアの開閉時のスピードです。1000もあればいいでしょう。

    • Delay Before Reset

ドアが何秒後に閉まるかです。この値が-1の場合閉まらなくなります。ただし、ドアトリガーに離れると閉まるという 命令を出しておくと閉まります。今回は自動で閉まりませんので-1になっています。 0から作ると勝手に閉まってしまい悩むことがあります。

    • Spawn Position

マップが読み込まれたときの状態です。開いている場合はopen 閉まってるときはcloseです。

    • Move Direction

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

ドアトリガー

トリガーテキスチャーを使って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なのでバギーなどのトリガーもあるようですが、使えないと思います。(未確認)

ドアモデル

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

主なプロパティ

    • Name
    • このプロップの名前です。ターゲットなどで名前を指定する場合はここの名前を指定します

    • Parent

このトリガーと連動する元(親)になります。今回はドア本体の名前を指定していますのでドア本体が上に開くと 一緒にこのプロップも上に開くようになります。

    • World Model

このプロップのモデル名です。ブラウズボタンを押すとプロップ選択画面が出ますので好きなプロップを選べます。 ただし、ここに表示されるプロップが全て使えるわけではありません。TF2に出ているプロップは ほとんど問題ありませんが、HL2に使われているプロップの半分以上は設置しても表示されません。使うためには マップにプロップのモデルを取り込み、一緒にBSPに埋め込まないとだめです。難しいです。 また当たり判定が無いモデルもあり、下記のCollisions solid を設定しても当たり判定が無いと通り抜けできて しまいます。無い場合はゲーム中にマップ読み込みの際エラーが表示されますが、ゲームには問題ありません。

    • 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

 

    上と説明は同じです。

 

wellのドアや巻きドアなどアニメーションタイプのドア

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

装飾

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

リスポンフィルター

リスポンフィルターはリスポンドアにつける相手チームがはいってこないようにするためのフィルターです。 リスポンルームのエンティティの名前を指定することでそのリスポンエリアを使えない相手が入れないようにします。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)