2ntブログ

同人サークル「Segment-R」の活動紹介。何か同人ソフトを作るヒントが見つかるかも

VxAceのイベントコマンドの小ネタ

CATEGORYRPG
例えば、『村の外から中に入る時に、ある特定の条件を満たした時だけ、村の入り口でとある登場人物が待ち伏せしている』みたいなイベントを組む時。

作り方として、待ち伏せする人物はフラグが立っている時のみ表示し、村の外から中に入る時には場所移動のコマンドを使うと思います。あとは条件を満たした段階でフラグを立てれば良いのですが、街に入った瞬間で待ち伏せフラグが立つかどうか判定したい場合もあるでしょう。

そんな場合に普通に組むと、条件を満たしても画面がフェイドインしている最中には待ち伏せしている人物が表示されず、マップが表示され切った瞬間に人物がパッと現れる、みたいな感じになってしまうと思います。

これを回避する方法として一番簡単なのは、待ち伏せ人物を画面外に配置し、村に入ったら歩いて画面の中に入ってくる、というものだと思いますが、地形によっては使えなかったり、不自然なシチュエーションもあると思われます。

もし、マップがフェイドしている時には既に表示されているようにしたい場合は以下のようにしています。TESで記述します。

----------------------------------------------------------------------

@fadeout
@map_move type=list map=numeric x=numeric y=numeric direction=list fade=none
@sw id=numeric flag=on
@fadein

----------------------------------------------------------------------

この処理の肝は、要するに、場所移動コマンドにフェイドを任せず、手動でフェイドを掛けるという点です。

まず1行目で画面をフェイドアウトし真っ黒状態にします。

2行目で実際にマップ移動をします。このときに"fade=none"とし、マップ移動中にはフェイドを掛けないようにします。

3行目でフラグを立てます。立てる条件の判定が必要な場合はここで判定します。

4行目で画面をフェイドインし、もとの明るさに戻します。

ちなみにこのやり方は、ツクールWebの講座の「夜のシーンを作る」に記載されているやり方の応用です。この考え方は応用範囲はかなり広く、自然な表現をしたい場合に結構役に立ちます。

TESの記述では処理がイメージしにくい人は、その講座の記事を見た方がわかりやすいかもです。



ちなみに、自分の場合シナリオテキストをTESで変換する前にプリプロセッサをかまして

----------------------------------------------------------------------

#define MAP_MOVE(map,x,y,direction,call) MAP_MOVE_V(type=const,map,x,y,direction,call)

#define MAP_MOVE_V(var,map,x,y,direction,call) @fadeout\n\
@map_move var map x y direction fade=2 \n\
@comment \n\
call \n\
@comment_end

----------------------------------------------------------------------

マップ移動は全部このマクロを使ってやっています。

callに、マップ移動した直後に呼ばれるテキストのファイル名をみたいな感じで記述して、その中でフラグのセットや@fadeinを呼び出している流れです。

プリプロセッサってなんぞや、という辺りはいずれ解説するかもしれません。

COMMENTS

0 Comments

There are no comments yet.

REPLY

Leave a reply