チュートリアル12でも少し触れたように、テレポートは、LinedefのSpecial属性を使う事で実現します。
ここでは、一つの部屋の中に二つのテレポートパッドを作って、単に部屋の端と端を行き来できるだけの非常に単純なマップを作ります。
まず、グリッドを64にして、図1のような三つのセクターを作って下さい(必ず外側のセクターを先に作って下さい)。パッドになるセクターを64のマス目に合わせる事以外は、大きさなどは大体で構いません。
図1 一つの部屋と二つのテレポートパッドになるセクター
次に、「デフォルトテクスチャ」ダイアログボックスを開いて、Lower Textureに「METAL2」を設定しておいて下さい。
次に、テレポートパッドになる二つのセクターのうちの一方を選択して、編集ダイアログボックスから、Floor Heightに8、Floor Flatに「GATE3」を設定して下さい。
また、もう一方のテレポートパッドのセクターには、Floor Heightは同じく8、Floor Flatには今度は「GATE4」を設定して下さい。
今度は、一方のテレポートパッドを形作っているLinedefの一本一本に対して、Specialに「097 Teleport WRm」、Tagに1を設定して下さい。また、それらLinedefの法線が全て外側を向くようにフリップさせて下さい。
もう一方のテレポートパッドを形作っているLinedefに対しても同じ事をしますが、Tag番号だけは2にして下さい。
次に、それぞれのテレポートパッドのセクターを選択して、LinedefのTagに1を設定した方には2のTag番号を、LinedefのTagに2を設定した方には1のTag番号を設定して下さい。
最後に、それぞれのテレポートパッドの真ん中あたりに、Thingの「Spot」グループの中にある「Teleport landing」を置いて下さい。「Spot」グループの中のThingは、エディタ上では×印で表されます。
ここで、マップの中の適当な場所に「Player 1 start」を置いて、マップをプレイしてみて下さい。図2が出来上がったマップの中の様子です。
図2 出来上がったマップをプレイしたところ
問題が無ければ、一方のテレポートパッドの上に乗ると、もう一方のテレポートパッドの上に現れる『双方向』のテレポートが出来ているはずです。
ここから先は、テレポートを作る上での注意点などをいくつか解説します。
まず、テレポートパッドとして作る時は、今回のように64X64の大きさのセクターを作って、Floor Flatには「GATE#」という名前の一連のテクスチャの中のどれかを使うのがほとんどなのですが、その際に、セクターの輪郭はエディタ上の64のグリッドに合わせる必要があります。
既にお気付きだと思いますが、Flatとして使われるテクスチャが揃う位置は、セクターの形や場所には依らず、常にマップの座標値が64の倍数である位置に固定されています。
従って、たとえセクターの大きさが64X64であっても、座標値が64の倍数でないと、テクスチャは中途半端な位置に貼られてしまいます。
このFlatのテクスチャの位置が固定されている事の利点は、隣り合ったセクターの床や天井の高さとテクスチャが同じだった時に、境界線の位置や向きがどのようであっても、テクスチャはシームレスにつながって見える事です。
次に、テレポートの着地点の指定の仕方について解説します。
通常、LinedefのSpecial属性では、機能の対象になるセクターをTagを使って指定しますが、もちろん、テレポートの正確な着地点はセクターを指定しただけではわからないので、そのセクターの中にThingの「Teleport landing」を置きます。
もし、そのセクターの中に複数の「Teleport landing」があった場合は、最初に見つかった一つが選ばれますが、普通は、一つのセクターには一つの「Teleport landing」だけを置くようにすれば、位置が不定になる事はありません。
また、ThingにはAngleという属性がありますが、チュートリアル10では、この属性はプレイヤーとモンスターにのみ適用されると言いましたが、例外的に、「Teleport landing」の時は、この属性は着地点に現れた時にどちらに向いているかを指定するのに使います。
最後に、テレポートの機能を持つSpecial Linedefの向きについて述べます。
通常は、Walk-over型のSpecial Linedefでは、左右どちら側からまたいでも機能が作動しますが、テレポートの時だけは、Linedefの右側(法線がある側)から左側にまたいだ時だけ作動します。これは、もし左右どちら側からまたいでも作動してしまうと、今回のように双方向のテレポートの場合、着地点のテレポートパッドを降りようとした時に、またテレポートしてしまう事になるからです。