イベントをプレイヤーの隣まで近付けてから別の処理を入れたい

SLT_R03
記事: 12
登録日時: 2021年9月02日(木) 14:41

イベントをプレイヤーの隣まで近付けてから別の処理を入れたい

投稿記事by SLT_R03 » 2021年9月10日(金) 01:08

「移動ルートの設定」でキャラAをプレイヤーの隣まで近付けた後、セルフスイッチをONにしてキャラAのイベントページを変更する処理をしたいのですが、キャラAがプレイヤーに近付いてる途中にセルフスイッチがONになってしまい別のイベントページが出現してしまいます

実現したい処理は以下の通りです

(1)キャラAは最初はランダム移動(キャラAがイベントページ1の状態である)
(2)プレイヤーが特定の位置(=イベント)に重なると、スイッチ[キャラAが近付いてくる]がONになり、それをトリガーとしてキャラAがイベントページ2の状態になり、キャラAがプレイヤーに近付く
(3)キャラAがプレイヤーの隣に辿り着いた後、キャラAのセルフスイッチAがONになりイベントページ3の状態になる
(4)イベントページ3の状態では、決定キーで話しかけるとキャラAがジャンプする

それに対して現状は、(2)の近付いてくる所まではちゃんと処理できているのですが、ここで「セルフスイッチA
をONにする」処理を入れるとキャラAがプレイヤーの隣に辿り着く前にキャラAのセルフスイッチAがONになってしまいキャラAがイベントページ3の状態になり、(イベントページ3では自律移動タイプが固定のため)移動が止まります

キャラAのイベントページ2の処理は以下のようにしています

◆条件分岐:スイッチ[0001:キャラAが近付いてくる]==ON
 ◆移動ルートの設定:このイベント
 : :◇プレイヤーに近付く
 : :◇プレイヤーの方を向く
◆セルフスイッチの操作:A=ON

:分岐終了


ですがこの処理だと、移動ルートの処理がすっ飛ばされて(実際には1フレーム単位で処理されているのでしょうけど)いきなりセルフスイッチAがONになってイベントページ3に変更されてしまいます
「セルフスイッチAのON」を置く場所が悪いのでしょうか
それともそれ以外に正しい方法があるのでしょうか


【ここから別の問題(これも困ってるので分かる方は是非回答お願いします)】

上記の処理から「セルフスイッチAをONにする」の項目を一旦外してキャラAがちゃんとプレイヤーの隣に近付く処理にした場合、どうも処理が繰り返し行われているようで、プレイヤーが上記の特定の位置(=イベント)から離れてスイッチ[キャラAが近付いてくる]をOFFにしてからもしばらく「近付いてくる」処理が行われてしまいます
(つまり特定の位置から離れた瞬間についてこないようにしたいのに、なぜか離れてからもしばらく付いて来ようとする。特定の位置から離れた時点で近付いてくる用のスイッチはちゃんとOFFになっているにも関わらず)
並列処理にしているのが原因かと思って自動実行にしたら今度はプレイヤーが動けなくなりますし、どうしたらいいか分かりません(自動実行も周期的に行われるとの事なので多分これも見当違いですが)

TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: イベントをプレイヤーの隣まで近付けてから別の処理を入れたい

投稿記事by TOMO » 2021年9月10日(金) 03:48

キャラAのページの自律移動を「近づく」か「カスタム」、トリガーを「イベントから接触」にして、
実行内容でセルフスイッチ等をONにすればいいのでは?
(条件分岐もイベントページの出現条件でやれば…)
SLT_R03
記事: 12
登録日時: 2021年9月02日(木) 14:41

Re: イベントをプレイヤーの隣まで近付けてから別の処理を入れたい

投稿記事by SLT_R03 » 2021年9月10日(金) 11:55

TOMOさん

回答ありがとうございます!
質問文には書いてなかったのですが、実はプレイヤーとキャラAの間にはカウンター判定のタイルが1マス挟まってます(すみません書くのを忘れていました)。試してみたところその状態ではトリガー「イベントから接触」が条件を満たしませんでした。この場合どうしたらいいでしょうか
(スイッチOFFにした後もしばらく付いてくる現象は直りました!)

それと使っているのはVXAceです。これも書き忘れていました。すみません
TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: イベントをプレイヤーの隣まで近付けてから別の処理を入れたい

投稿記事by TOMO » 2021年9月10日(金) 15:04

その場合は指定座標までイベントを移動させる「moveto(x, y)」を使います
(xはX座標、yはY座標)


まずプレイヤーのX座標とY座標を変数に代入します

で、そこから条件分岐を駆使し、
キャラAを「moveto(x, y)」で指定座標まで移動させるようにイベントを組めば可能です
(プレイヤーの座標毎に全通り設定する)

※「moveto(x, y)」は「移動ルートの設定」と「自律移動>カスタム」で使う場合の記述で、
他で使う場合は「$game_map.events[n].moveto(x, y)」となります
(nはキャラAのイベントID)


質問文には書いてなかったのですが、実はプレイヤーとキャラAの間にはカウンター判定のタイルが1マス挟まってます(すみません書くのを忘れていました)。
それは書き忘れないで欲しかったです

タイトルも「イベントをプレイヤーの隣まで近付けて」だから、
間にカウンター(障害物)があるなんて分かりませんし…
SLT_R03
記事: 12
登録日時: 2021年9月02日(木) 14:41

Re: イベントをプレイヤーの隣まで近付けてから別の処理を入れたい

投稿記事by SLT_R03 » 2021年9月10日(金) 16:32

TOMOさん

ご丁寧に解説してくださりありがとうございます!試してみます
書き忘れについては申し訳ありませんでした。今後は気を付けます
SLT_R03
記事: 12
登録日時: 2021年9月02日(木) 14:41

Re: イベントをプレイヤーの隣まで近付けてから別の処理を入れたい

投稿記事by SLT_R03 » 2021年9月10日(金) 17:52

TOMOさん(ご報告)

無事できました!
前回に引き続きありがとうございます

“VX / Ace:質問” へ戻る