ANIMDEFS
アニメーションを持ったTextureの設定をします。


挿入形式

ANIMDEFSは変更したい情報をテキストファイルに書き込んで挿入します。
挿入するときの名前はANIMDEFSです。


変更方法
ANIMDEFSに設定したいTextureの情報を書き加えて下さい。ちなみに、解説で出てくる<>や()はわかりやすく区切るためのものなので実際に入力するときは省いてください。


アニメーションの設定

texture <画像名>
または
flat <画像名>

アニメーションを起こす画像の設定を行います。この言葉が先頭に来る必要があり、これより下の行に設定したい内容を書き加えます。また、設定した画像には設定した内容のみが反映されます。(元の画像は投影されません。)
アニメーションを起こす壁の画像の名前はTexture(Pnameの組み合わせでから成る画像、以後TEXTURExと呼びます。)から選ぶべきかと思われます。床や天井の画像の場合はそのままで良さそうです。床や天井の新規追加画像はF_STARTとF_ENDに挟まれている画像の名前にしておくべきだと思います。TEXTURExなどの画像の解説はオリジナルTextureの挿入方法で紹介しています。

PIC<番号 または 画像名> tics<値> または rand<最小値 最大値>

アニメーションの一部分の画像の設定をします。通常はこれが複数集まってアニメーションになります。
番号 または 画像名の所には、アニメーションの画像の名前を持ってくることもできますが、現在設定している画像(texture<画像名>またはflat<画像名>)を1番としてTEXTURExの順(恐らくアルファベット順)にそれより後ろの画像を2番目、3番目として番号で画像を指定することができます。
例えば、
現在設定している画像(texture<画像名>またはflat<画像名>)がABCだとし、TEXTURExの順番では次がACBだとすると、ACBを投影したい場合は番号2だけで指定できると言うことです。
また、そのPICで指定した画像を投影している時間をticsで指定します。(35tics=1秒)です。また、投影する時間をランダムにしたい場合はticsの代わりに(rand 最小値 最大値)と入力しましょう。最小値から最大値までの値をランダムに使用します。
また、最後のアニメーション(PIC)が終了したら最初のアニメーションに戻ります。(ループ)

RANGE <番号 または 画像名> tics<値> または rand<最小値 最大値> (Oscillate)

現在設定しているTEXTURExからRANGで指定したTEXTURExまでの間を(間の画像も含む)ticsの間隔で画像を更新させます。
numberはPICと同じです。
例えば
A001〜A009までを10ticsの間隔でアニメーションにしたいときなどに

texture A001
ranage A009 tics 10

と指定するだけで投影され、とても便利です。
また、指定したTEXTURExとRANGEで指定したTEXTURExの間のTEXTURExも自動的にアニメーションになってしまうので注意して下さい。また、通常、最後のアニメーション(例ではA009)に達したら最初のアニメーション(例ではA001)に直接戻りますが、Oscillateを付け加えると最後のアニメーションから最初のアニメーションまで間の画像を使って順番に戻るようになります。

ALLOWDECALS

これを付け加えることでDecal(壁に銃を撃ったときに残る銃弾の跡など)の投影を許可します。

例1:abc01について、abc01〜abc07を2/7秒間隔で投影するアニメーションにします。

texture abc01
allowdecals//decalの使用を許可(銃弾を壁に撃つと弾丸の跡が残る)
pic 1 tics 10
pic 2 tics 10
pic 3 tics 10
pic 4 tics 10
pic 5 tics 10
pic 6 tics 10
pic 7 tics 10

例2:床の画像GATE1について、GATE1〜GATE4を2/7秒間隔で投影するアニメーションにします。

flat GATE1
pic GATE1 tics 10
pic GATE2 tics 10
pic GATE3 tics 10
pic GATE4 tics 10


スイッチのアニメーションの設定

SWITCH <画像名>

スイッチの設定をする画像を指定します。恐らくTEXTURExの中から指定すべきだと思います。

さらに、次の二つのコマンドをSWITCH <画像名>の後に付け足します。

ON

スイッチが起動したとき(ONになったとき)の設定をします。

OFF

スイッチが元に戻ったとき(OFFになったとき)の設定をします。

ONやOFFの後に次のコマンドを指定することができます。

SOUND <音の名前>

スイッチがONまたはOFFになったときに出る音を指定します。音はまずSNDINFOで設定する必要があると思われます。
アニメーションの設定の前にこれを設定しないと私の場合(GZDOOM)は何故かアニメーションが正しく表示されませんでした。ちなみに、既存のスイッチ音はswitches/normbutnです。

PIC<画像名> tics<値> または rand<最小値 最大値>

texture <画像名>のときのように、スイッチがONまたはOFFになったときのアニメーションを指定できます。また、途中のアニメーションがなく、すぐにスイッチを押した後の画像になる場合は変更後の画像のticsを0にしましょう。

例3:画像mysw1_onとmysw1_off

switch mysw1_off//mysw1_off→mysw1_onの設定
on
sound switches/normbutn
pic mysw1_on tics 0

switch mysw1_on//mysw1_on→mysw1_offの設定
off
sound switches/normbutn
pic mysw1_off tics 0

例4:アニメーション式のスイッチ

switch mysw2_a
on//a→c
sound switches/normbutn
pic mysw2_a tics10
pic mysw2_b tics10
pic mysw2_c tics10
off//c→a
sound switches/normbutn
pic mysw2_c tics10
pic mysw2_b tics10
pic mysw2_a tics10


画像を歪ませる設定

WARP <flat または texture> <画像名> (allowdecals)

指定した画像が水面のように歪みます。水の画像などに使用すると効果的です。TEXTURExでも使用可能ですが、とても不自然に歪むので、壁に歪む画像を投影したい場合は、一端床の画像を歪むように設定して壁に投影させる方が良いと思います(余談ですが、SP_FACE1(人の顔の画像)を歪ませるとある意味不気味になります。)。また、allowdecalsを追加するとこの画像にdecal(銃弾などのめりこんだ跡)の投影を許可します。ちなみに、decal自体は歪みません。また、歪む画像がアニメーションの一部の時(水の画像の1枚など)、指定した画像がアニメーションで投影された瞬間のみ歪みます。(かなり不自然です。)

WARP2 <flat または texture> <画像名> (allowdecals)

WARPと基本的には同じですが、歪み方が違います。こちらのほうがより液体のような感じがします。WARPより素早く(?)歪みます。

例5:歪む画像

WARP flat wpwater


アニメーションで動くドアの設定

ANIMATEDDOOR <画像名>

アニメーションで動くドアの画像を指定します。閉じているドアの画像にしましょう。

OPENSOUND <soundsepuence名>

ドアが開くときの音の連続名を設定します。また、SNDSEQで定義した音の連続でなければなりません。SNDSEQがまだよくわからないのでSNDSEQの解説を新設するまで詳しい解説はお待ちください。

CLOSESOUND <soundsepuence名>

ドアが閉じるときの音の連続名を設定します。そのほかの点はOPENSOUNDと同じです。

PIC<番号 または 画像名>

ドアのアニメーションの設定をします。閉じた状態から開いた状態へアニメーションを指定して下さい。今回はticsの指定がありません。

これでアニメーションの設定が完了したので、実際にマップにドアを作ってみましょう。

・通常通り天井が上下するドアを作ります。
・ドアの画像(UpperTexture)に先ほど設定した画像を貼り付けます。
・通常、ドアを開けるためにDoor_Openなどを設定するLineに2 ALL Doors→G Door Animated +Tag-Speed-Delay [14]を設定します。Tagはドアの部分のSectorのLinDefTagを、Speedはドアの開く早さ(おそらくアニメーションの間隔)を、Delayはドアの開いている時間を意味します。

これでアニメーションのドアが完成です。ちなみに、ドアの間にずっと立っているとドアが閉まりません。(当たり前ですが・・・)

例6:アニメーションのドア(ADOOR1が閉まっている状態で、ADOOR3が完全に開いている状態です。)

ANIMATEDDOOR ADOOR1
OPENSOUND doorSND_OPEN
CLOSESOUND doorSND_CLOSE
pic ADOOR1
pic ADOOR2
pic ADOOR3

Special&関数集もANIMATEDDOORの説明をしています。


カメラの映像をリアルタイムに投影する画像の設定

CAMERATEXTURE <画像名> <横幅> <高さ> (fit <横幅> <高さ>)

まず、<画像名>でカメラの映像を投影する画像を指定します。
また、投影する画像の大きさ(横幅、高さのドット数)も指定します。とりあえず貼り付ける画像と同じ横幅、高さの値にすることをおすすめします。
また、画像の大きさはそのままで、画像の細かさを大きくしたい場合、(例:32*32の大きさにしたいが、同時に64*64の細かさにしたいときなど)は、fit <横幅> <高さ>を付け足し、ここに画像の大きさを指定します。また、前半の<横幅> <高さ>に画像の細かさを指定します。つまり前半が大きい値で、後半が小さい値になります。
※注意:私のPCの場合、カメラの映像を投影した画像がプレイヤーの視界内に入ると、ゲームのパフォーマンスにかなり影響しました。注意して下さい。また、正方形の画像の方が、メモリの使用量が少ないそうです。

では、実際に作ってみましょう。今回は例7の画像を使うとします。

例7:カメラの映像を投影する画像
cameratexture camtex 96 96 fit 48 48//前半→細かさ 後半→大きさ

この画像を使うマップのScriptに次のScriptを付け足します。

Script 1 OPEN//番号はご自由に
{
SetCameraToTexture( 900, "CAMTEX", 50 );
}

説明:
setcameratotexture(int cameratid, str texturename, int fov);

cameratid//投影するカメラのTidを指定します。
texturename//カメラの映像を投影するTEXTUREの名前を指定します。
fov//視野です。値が低ければより視野が狭くなって(ズームされて)投影されます。04/02訂正

これで完成です。テストプレイをして確認してみましょう。


これでANIMDEFSの解説は終了です。必要に応じて修正、追記します。


Home Back