足跡をたどるイベントを実現させたいです(イベント同士の接触判定)

返信する
アバター
しゆしゆ
記事: 2
登録日時: 2016年9月26日(月) 19:04

足跡をたどるイベントを実現させたいです(イベント同士の接触判定)

投稿記事 by しゆしゆ »

件名の通り、
マップ上を動いているイベントが、プレイヤーの歩いた足跡に触れたらそれをたどって移動し始める動作を
作りたいと思うのですが、どうすればできるかわかりません。

プレイヤーの足跡についてはトリアコンタンさんの動的イベント生成とテンプレートイベントを組み合わせて
イベントを配置する形で実現できましたが、イベントに足跡をたどらせるのが難航しています。

イベント同士が接触しているかを判定しようと思い、移動するイベント側にスクリプトで
$gameMap.eventIdXy(this.character(0)._x, this.character(0)._y) 
と書いて自分のいる座標にあるイベントのIDを変数に取得できるか試したところ、案の定自分のIDを取得してしまいました。

あるイベントが自身と同じ座標にある別のイベントのIDを取得することさえできれば何とか実現できそうだと思うのですが、
どなたかその方法をご存知ないでしょうか?
添付ファイル
あしあと
あしあと
足跡.jpg (80.03 KiB) 閲覧された回数 2918 回
アバター
Trb
記事: 151
登録日時: 2015年11月15日(日) 19:26
連絡する:

Re: 足跡をたどるイベントを実現させたいです(イベント同士の接触判定)

投稿記事 by Trb »

$gameMap.eventIdXy ではイベントが複数重なっている時一番若い番号のイベントを返すようになっています。
重なっているイベント全てのイベントIDを取得するには
$gameMap.eventsXy(this.character(0)._x, this.character(0)._y)  ← eventIdXy を eventsXy にする
と書けば全てのイベントIDを配列の形で取得できます。

もしイベントが3つも4つも重なるような状況が発生しうる場合、配列から目的の値を抜き出すにはある程度配列の扱い方が分かっていないと難しいですが、
単純にイベントが他のイベントと重なっているかだけ判定できればいいのでしたら
条件分岐のスクリプト欄に
$gameMap.eventsXy(this.character(0)._x, this.character(0)._y).length >= 2
と書けばいいです。
(length という記述で配列の長さを求めることができ、length >= 2 という記述で配列の長さが2以上 = つまりイベントが2つ以上重なってるという判定になる)
例.png
アバター
しゆしゆ
記事: 2
登録日時: 2016年9月26日(月) 19:04

Re: 足跡をたどるイベントを実現させたいです(イベント同士の接触判定)

投稿記事 by しゆしゆ »

trbさんありがとうございます。
ちゃんと複数のIDを取得するやり方が別にあるんですね。スクリプトに関しては調べてもなかなか出てこないので…

重なっているイベントによって動く向きを変えるようにしたいので、IDからイベントの名前なり使われている画像なりを取得して
条件分岐させたいですね。(「右向き足跡」を踏んだイベントは右に移動する、みたいに)

えーと、配列から自身のIDを除く一番大きいIDを取り出すことができればやれそうなかんじですね。

ありがとうございます、それでやってみます。
返信する

“MV:質問”に戻る