【ウディタ】フキダシ表示(スクロールとリンクの仕様)
マップEvの並列実行からフキダシを表示するようにしました。
- 画面外になると消えます
- 処理上の都合で一度に表示できるのは1つまで
- 一定時間で消える
- 話しかける事も可能(フキダシは消える)
このフキダシ処理を実現する上で、マップEvは以下2つの起動条件と処理を実行できなければなりませんでした。
- 主人公が隣接した状態で決定キーを入力すると、通常の会話処理を実行
- 主人公が一定距離に近付くと、フキダシ表示=並列実行(複数起動可能)
そんなわけで、マップEvを2つ用意して無理矢理実現してます。
マップEv① 決定キーで実行(会話)
マップEv② 接触⇒並列実行(フキダシ表示)
あんまりいい方法とは言えないですね...
で、本題はそこじゃなくて。
フキダシをピクチャ表示する時に、マップEvの真下からフキダシがふわっと出てくるようにしたのですが、この処理を作るときに苦戦したのがこれ↓
スクロールとリンクの仕様
まず、主人公が移動して画面が動く時、フキダシの位置も常に移動する必要があるので、ピクチャ表示の際に「スクロールとリンク」にチェックを入れてます。
そしてこの「スクロールとリンク」にチェックを入れた場合、座標として入力された数値は以下の通りに表示されるようです。
通常(絶対座標)の場合 | 相対モード(加算)の場合 | |
表示 | 画面座標 | |
移動 | マップ座標 | 画面座標 |
画面座標・・・ゲーム画面左上を座標(0,0)とした時のピクセル単位座標。
マップ座標・・・マップ左上を座標(0,0)とした時のピクセル単位座標。
ピクチャ表示の時に「スクロールとリンク」にチェックを入れて、それをピクチャ移動させると、絶対座標が画面座標ではなくマップ座標の位置で計算されるようです。
つまりピクチャの座標は、表示する時は画面座標で、移動する時はマップ座標で指定する必要があるわけですね。
マップ座標の取得は以下で可能でした。
システム変数104・105「スクロール値」を入力座標に加算してあげます。
加算後の入力座標をピクチャ移動に使えばいいわけです。
表示部分:画面座標を入力
移動部分:マップ座標を入力
今回の場合、ピクチャ移動にはディレイを使用していて、相対モードではピクセル数に若干のずれが生じて何故か挙動が安定しなかったので不採用。
うーん、なんでだろ。今後勉強します...
一応、現在使用中のウディタのバージョンを明記しときます:Ver2.294
今調べたところ最新はVer2.2961らしいですね。この時以降アプデずっとサボってます。
秋にVer3への大規模アップデートを控えてるらしいので、その時になったらアプデしようかな。
※2022/10/5 追記
試行錯誤の結果、どうやら処理の間にウェイトを入れれば正常に機能するらしい、ということが発覚。
ただ...こんな所にウェイトを入れてしまうと当然、ぬめっとした動きというか、表示が遅くなってしまうので結局不採用。
※ちなみにウェイトを入れないとこんな位置に↓
若干足りてない。移動完了前に処理が飛ばされてしまってるのか...?