ゆういちレーダー

座標と変数操作+

l8_1

ニワトリがどこにいるのか、その座標を主人公の頭の上に表示する処理を作ってみましょう。

処理例1 – 変数操作+

【起動条件:並列】

l8_2

表示されました……が、画面端に行くと見切れてしまうようです。
表示もXYのプラスマイナスだけでは直感的ではないので【上下左右に何マス】という風にしてみましょう。

【NOTE:変数操作+】

詳しくは公式マニュアル【イベントコマンド一覧】の【変数操作+】の項を参照してください。
主人公やイベントの座標、マップチップの情報、ピクチャの各種情報、BGM、マウスや その他システム的な情報が取得出来ます。SDBやSys[x]と、この変数操作+があればだいたいのゲーム内情報は取得出来ます。

NOTE:【座標系】

精密座標、標準座標、画面XY座標については、項目が多いので別ページにまとめました。  座標系ページヘ

処理例2 – 修正案

【起動条件:並列】

l8_3

うまく表示できたようです。33行目では、座標(0,0)の右下表示、つまり画面外で一旦文字列ピクチャを表示しています。 そこで変数操作+を使ってピクチャの大きさを読み取り、画面外に出る場合は画面内に収まるように修正しています。

【NOTE:引上げ(下限)、引下げ(上限)】

上記2つの処理は、同じ処理を行います。
引下げ(上限)は、左辺が右辺より大きい時に、左辺に右辺を代入。
引上げ(下限)は、左辺が右辺より小さい時に、左辺に右辺を代入。
引上げ引下げと条件分岐をよく見て、どういう動作をするかしっかり理解しましょう。
また、入力ウィンドウでは【引上げ、引下げ】、コマンド表示は【下限、上限】と、表示が異なる上に上下も逆になっているので混乱しないように注意してください。 この引上げ引下げをうまく使うと、条件分岐が少なく済んだり、大きい順に並び替えたりが容易になります。

おまけ

上記2つの処理は同じ内容です。変数呼び出し値を使えば、座標の差を求めるコマンドが短縮されます。
この例では、
Cself16=【9100002】-【9180002】
Cself17=【9100003】-【9180003】
のように手動で入力しています。
また、
イベントは並列で毎フレーム判断しているので、このようにイベントの先頭に【座標の差XY両方とも前回と同じ】 場合は処理をしないようにすると、負荷が軽くなります。(前回座標は、コモンイベントの最後に座標差を代入しています)
並列のイベントは処理が重くなる原因のトップクラスなので、このような処理のカットや、毎フレーム判断する必要がない場合は数フレームに一度の処理にするなどの工夫が必要です。
ちなみにこの処理を入れると、マスからマスへ移動している時は座標差が変わらないために表示がカクカクしてしまいました。 最初だけピクチャを【表示】にして、歩行速度から1マス移動にかかるフレームを求めてピクチャを【移動】にするなどの回避処理も必要そうです。

はじめにお読みください

ここはWOLF RPGエディター(通称ウディタ)のイベント作成において、 ひとつのお題に対していくつかの考え方を示すページです。正解や不正解ではなく、色々な考え方を示していけたらいいなと思っています。詳しくは以下をお読みください。

続きを読む