USEボタンを押すとアクティベイトされるタイプのSpecial Linedefでは、ローカルドアを除いて、大抵はスイッチ用のテクスチャを適用します。
スイッチ用のテクスチャの名前は、「SW1」または「SW2」で始まり、それ以降の名前が同じもの同士が対になって存在しています。これらのテクスチャをスイッチタイプのSpecial Linedefに適用すると、USEボタンが押された時に、自動的に対になっているテクスチャに入れ替わります。またスイッチが入った時の効果音も鳴ります。
今回は、このスイッチの機構を使ったBuilding Staircaseを作ってみたいと思います。
まず準備として、グリッドを64にして、デフォルトセクターのFloor Flatを「FLAT1」にして下さい。
次に、図1のように、縦がグリッド5個分、横がグリッド6個分程度のセクターを、南北に並べて二つ作って下さい。
図1 南北に隣り合わせの二つのセクターを作る
そして、北側のセクターの床の高さを、セクター編集ダイアログボックスを使って、32に変更して下さい。プレイヤーが越えられる床の段差は24までなので、これで南側のセクターから北側のセクターには行けない事になります。
次に、南側のセクターのやや右寄りの部分に、四角い『柱』を作って下さい(図2)。この柱はVoid Spaceなので、反時計回りに描いて下さい。そして、図2のように柱の南側に面しているLinedefを選択して、Linedef編集ダイアログボックスを呼び出して下さい。
図2 柱をVoid Spaceとして作る
ここで、Specialに「007 Stair S1 Up8 Slow」、Tag番号に1、Middle Textureに「SW1GRAY」を設定して下さい。スイッチのテクスチャは、見て解る通り、特定の壁のテクスチャと『一体』になっていて、スイッチの部分だけのテクスチャを独立して使う事は出来ないので、あまり融通は利きません。
次に、グリッドを32にして、図3のように、南側のセクターの中に、階段のステップとなる三つのセクターを並べて作って下さい。
図3 階段のステップになるセクターを作る
そして、階段の最初のステップになる三つの中で一番南側のセクターを選択して、Tag番号を1にして下さい。これで、先程設定したスイッチになるLinedefと階段の最初のステップになるセクターとが関連付けられました。後は、Linedefがアクティベイトされた時に、残りのステップになる二つのセクターも連動して持ち上がればいいのですが、そのためには条件があります。
まず、Tagで関連付けられたセクターは、そのセクターを構成しているLinedefの中から「Right Sidedefが内側を向いているTwo-sided Linedef」を探します。そして、最初に見つかったそのようなTwo-sided LinedefのLeft Sidedef側にあるセクターを次の階段のステップになるセクターだと判断します。後は同じ原理で、条件に合う隣接するセクターがその次のステップになります。ただし、それら一連のセクターは、床のテクスチャが全て同じでなくてはいけません。
このように、Stairの種類のSpecial Linedefは、一つのセクターにTagを設定するだけで、いくらでも多くのセクターを連動させられる便利なものですが、その分、次のステップになる条件をよく把握していないと、予期せぬセクターまで持ち上がってしまう事にもなります。
今回の場合は、床のテクスチャは全てのセクターで同じなので、Linedefの向きを適切に調整しないと、関係の無いセクターまで動いてしまう可能性があります。そこでここでは、Two-sided Linedefのフリップ機能を使ってこの調整をします。
上で述べたように、次のステップになるセクターの条件は、Right Sidedefが内側を向いているTwo-sided Linedefの中で最初に見つかったもののLeft Sidedef側のセクターです。しかし一般的に言って、そのようなLinedefが複数あった場合、どれが最初になるかはわからないので、次のステップにしたいセクター以外のセクターと接しているTwo-sided Linedefは、すべてRight Sidedefが外側を向くようにしておく必要があります。
図4は、今回の場合に、Linedefをどちらに向けたらいいかを示した図です。ただし、WadCraftでは複数のオブジェクトを選択する事は出来ないので、実際にはこのような表示のされ方はしません。
図4 Building StaircaseのLinedefの向き
WadCraftでは、セクターを作成した時は、全てのLinedefのRight Sidedefが内側を向いているので(ただし、既にあるLinedefと完全に重なるLinedefは、向きは元のままです)、こういった場合には、向きを変える必要のあるLinedefが多くあります。
それでは実際に、フリップ機能を使って図4のようにLinedefの向きを変えてみて下さい。
これで、Building Staircaseとしての動きはするようになりますが、このままだと、床が持ち上がった時に、床の段差の部分の壁には何も表示されません。
前にも述べた通り、Lower TextureやUpper Textureについては、WadCraftでは、セクターが作成された時、あるいは、セクターの床や天井の高さが変更された時に、必要が生じた時にだけ自動的に設定されます。
Building Staircaseになるセクターは、初期状態では床の段差が無いので、Lower Textureには何も選択されていません。このため、床が持ち上がった時の状態を考えて、あらかじめ、Lower Textureを設定しておく必要があります。
では実際に、階段のステップが持ち上がった時に段差が出来る部分のTwo-Sided Linedefの適切な側のSidedefのLower Textureに「GRAY1」を選択して下さい。
以上の事が終わったら、マップ内の適当な場所に「Player 1 start」を置いて、マップをプレイしてみて下さい。
図5は、階段が出来上がる前の状態と、スイッチを押して階段が出来上がった後の状態です。
図5 スイッチを押す前と押した後の状態
今回は、階段の段差が8になるSpecial属性を使いましたが、Building Staircaseには、他に段差が16になるタイプもあります。それぞれ、ドロップダウンリスト内の項目の動作を表す部分には、「Up8」または「Up16」と表示されます。
スイッチのテクスチャについて言うと、今回は、「SW1」で始まる名前の方のテクスチャを選択しておきましたが、最初に「SW2」の方のテクスチャを選択しておいても、スイッチが押された時にもう一方のテクスチャに入れ替わる機能は変わりません。
解釈の仕方にもよりますが、「SW1」の方がスイッチが『切れている』時の状態、「SW2」の方がスイッチが『入っている』時の状態を表現しているように思われます。どちらを初期状態として選択するかは、その時の状況によって判断するのがいいと思います。
また、今回はスイッチが一度しか使えない「S1」型のSpecial属性なので、テクスチャが入れ替わった後はずっとそのままですが、スイッチが何度でも使える「SR」型の場合は、スイッチが押された時、テクスチャが一旦切り替わった後に、すぐにまた(効果音と伴に)元のテクスチャに戻ります。
ここで、プレイヤーがUSEボタンを押した時に、Special Linedefが反応する『範囲』について少し述べておきます。
DOOMをプレイした人なら、スイッチのテクスチャが貼られた壁にある程度近い距離で、かつその壁の方向を向いていれば、USEボタンを押した時に反応するのは、経験的に解ると思いますが、これを正確に言うと次のようになります。
プレイヤーが立っている位置を始点として、プレイヤーが向いている方向に伸びた、長さが64のベクトルを考えて、そのベクトルとSpecial Linedefとが交差している時に、USEボタンが押されれば反応します(図6)。
図6 USEボタンに反応する時の条件
壁の幅が長い時は、スイッチに反応する範囲も大きくなるので、そのような時はチュートリアル10で説明した『頂点の挿入』機能を使って、Linedefを適当な長さに分割してからSpecial属性を設定した方がいいでしょう。スイッチのテクスチャの幅は、ほとんどが64になっているようなので、その長さが最も適当だと思います。
反応する範囲の長さをもっと縮めて、テクスチャの中のスイッチの絵の部分と合うようにする事も出来ますが、その場合は、Sidedefの属性である「X offset」を調整してテクスチャを合わせる必要があるでしょう。
これで、「S1」型や「SR」型のSpecial属性を使う時は、どんなタイプの機能でも、スイッチの効果を適用出来るようになると思います。チュートリアルでは取り上げませんが、通常のレベルを作る時は無くてはならない、「Exit」の種類のSpecial Linedefも簡単に作れると思います。
「Exit」の場合は、近くに「EXIT」という文字の入ったテクスチャなどを使って、分かり易くするのが普通ですが、それ以外は通常のスイッチと変わりありません。ただし「Exit」には、Walk-over(W1)型のタイプもあります。また、「Exit」の場合は、一つのレベルの中で何度も使えるという事はないので、全てOnce型、つまりS1かW1のタイプになります。