Changerとは、チュートリアル12でも少し触れた通り、LinedefのSpecialの機能の一種で、指定したセクターの床を動かすと同時に床のテクスチャやセクターのSpecial属性を変える事が出来る機能を言います。
今回も、やはり最初に実際例を示してから、その後で詳細を解説します。
まず準備として、デフォルトテクスチャのMiddle Textureに「BROWN1」、Lower Textureに「NUKE24」、デフォルトセクターのFloor Flatに「FLOOR5_3」、Ceiling Flatに「FLAT5」を設定しておいて下さい。
次に、グリッドを64にして、縦横の長さがグリッド8個分くらいの四角いセクターを作って下さい。
次に、そのセクターの中の左下あたりにグリッド一つ分の柱(Void Space)を作り、さらに、中心よりやや右上あたりに縦横がグリッドで三個分くらいのセクターを作って下さい(図1)。
図1 一つのセクターの中に『柱』と『プール』になるセクターを作る
次に、その縦横がグリッドで三個分のセクターを選択して、セクター編集ダイアログボックスを呼び出して下さい。そこで、Floor Heightに-24、Floor Flatに「NUKAGE1」、Specialに「07 NUKAGE DAMAGE」、Tagに1を設定して下さい。他の値はそのままで構いません。
次に、『柱』を作っている四つのLinedefの中で東側に面しているLinedefを選択して、Linedef編集ダイアログボックスを呼び出して下さい。そこで、Specialに「020 Floor(C)(Tn) S1 UpLEF Slow」、Tagに1、Right SidedefのMiddle Textureに「SW1BRN2」を設定して下さい。
以上が終わったら、適当な場所に「Player 1 start」を置いて、マップをプレイしてみて下さい。図2のようなマップ内の様子になるはずです。
図2 出来上がったマップ内の様子
ここで、柱にあるスイッチを押してから、『NUKAGE』のプールの方に注目して下さい。プールの表面が持ち上がって回りの床と同じ高さになると同時に床のテクスチャも回りと同じものに変わるはずです。また、最初に設定したSpecial属性の「07 NUKAGE DAMAGE」の性質も無くなります。
以降は、Linedef編集ダイアログボックスの中のSpecial属性のドロップダウンリスト内の項目に表示されるChangerについての表記法について解説します。
まず、Changerは常に床の上下の移動を伴う種類の機能なので、「Floor」と書かれた項目の中にあります。Floorという文字に続いて(C)と書かれているのがChangerである事を表します。さらに(C)の後に(Tn)や(Nt)と書かれた記号が続きます。ここでの大文字のTは、そのChangerがTriggerモデルである事を表しています。Triggerモデルとは、Special Linedefの機能の対象になったセクターのテクスチャやSpecial属性が変わる時に、そのSpecial LinedefのRight Sidedef側にあるセクターと同じテクスチャやSpecial属性に変わるという事を意味します。
一方、大文字のNは、そのChangerがNumericモデルである事を表しています。Numericモデルとは、対象になったセクターがテクスチャやSpecial属性を変える時、そのセクターと隣接するセクターのうち、最初に見つかったものを参照してそれと同じテクスチャやSpecial属性に変わる事を意味します。
大文字のTやNの後には、小文字のnまたはtが続きますが、申し訳ありませんが、この部分については、ドロップダウンリストの項目を作った時に参照した参考文献[1]や[3]に書かれている事と実際とでは「ずれ」がある事が分かったので、現在のところこの部分については無視して下さい。
結局この部分で表したかった事は、Changerの対象になったセクターの変化が、テクスチャのみなのか、Special属性もモデルとなるセクターから転移されるのかという事です。
例えば、今回の例で、LinedefのSpecialを「020 Floor(C)(Tn) S1 UpLEF Slow」ではなく「015 Floor(C)(Tn) S1 Up24 Slow」に替えると、テクスチャは変わりますが、ダメージを与える性質はそのまま残ります。この辺のところは、実際に試してみて動作を確認した方がいいです。
最後に、今回作ったマップに少し修正を加えて、LinedefのSpecial属性が9番の「Donut」エフェクトを作ってみたいと思います。
DonutもChangerと同じようにセクターの床のテクスチャとSpecial属性が別な物に変化する性質を持ちますが、Tagで指定されたセクターでは無く、その指定されたセクターを囲んでいるドーナッツ状のセクターの方のテクスチャとSpecial属性が変化します。
まず、準備としてデフォルトテクスチャのLower Textureに「NUKEDGE1」を設定して下さい。
次に、図3のようにNUKAGEのプールの中に64のグリッド一つ分のセクターを作って下さい。
図3 プールの中にセクターを作る
そして、セクター編集ダイアログボックスで、Floor Heightを104、Tagに1を設定して下さい。さらに、この新しく作ったセクターのLinedefの法線の向きが全て外側を向くようにフリップさせて下さい。
一方、プールだったセクターは『堀』状になったと思いますが、こちらのTagは0に戻しておいて下さい。
次に、先程スイッチとして作った柱の一部のLinedefの編集ダイアログを呼んで、Special属性を「009 Donut S1 Slow」に変更して下さい。
以上が終わったら、マップをプレイしてみて下さい。図4がマップ内の様子です。
図4 「Donut」エフェクトが作動する前の様子
今度は、柱の上のスイッチを押すと、ドーナッツの穴の部分のセクターは下に下がり、ドーナッツ状のセクターは上に上がって、どちらもドーナッツの外側にあるセクターと同じ高さで止まります。さらに、ドーナッツのセクターは周りのセクターと『同化』するように床のテクスチャが変わり、ダメージを与える属性も無くなります。
このように、Donutを作る時は、Tagで指定したドーナッツの穴の部分にあたるセクターの床の高さはあらかじめ一番上に、ドーナッツ部分のセクターの床の高さは一番下になるように作っておいて下さい。
また、穴の部分のセクターのLinedefは、Right Sidedefが全てドーナッツのセクター側に向くようにしておいて下さい。本当は、最初のLinedefさえそうなっていればいいのですが、一般に、どのLinedefが最初になるかは不確かなので、全てのLinedefをそのようにしておいた方がいいです。