はじめまして。移動ルートの設定について質問いたします。
「倉庫番」のようなゲームを作ろうと考えています。
大きなブロックを、四つのイベントの塊で用意し(左上、右上、左下、右下)
どこかが押されたら、四つひとかたまりで動かせるようにしたいです。
トリガーを「プレイヤーからの接触」にして、四つそれぞれに移動ルートの設定をしているのですが
どうしても一部が動かず分離してしまいます。
分離の原因が、イベント同士の衝突にあるのではと考え、押した方と反対側を「すり抜けon」にしてみたのですが、
かわらず分離してしまいます。
(右から左に押す場合のみ、想定通り四つ塊で左に動いてくれます)
解決法、代替案などがあれば、ぜひ教えていただきたいです。
【解決済み】複数のイベントを同時に移動する方法
【解決済み】複数のイベントを同時に移動する方法
- 添付ファイル
-
- スクリーンショット 2019-02-20 2.37.23.png (66.6 KiB) 閲覧数: 4032 回
-
- 2019-02-20 2.png (55.84 KiB) 閲覧数: 4032 回
最後に編集したユーザー nanase on 2019年2月27日(水) 13:38 [ 編集 1 回目 ]
Re: 複数のイベントを同時に移動する方法
たぶんすり抜けをONにするタイミングの問題だと思います。イベントは障害物があるとそちらには動いてくれないので、すり抜けONにした後で移動させるべきだと思います。おそらくすり抜けONにすると障害物の中にめり込むのを防ぐためだと思いますが、画像のやり方だとイベントの一つが障害物に当たって動けないときと、どれかのイベントが障害物に当たらないで動けるときに分離してしまう問題が出てくると思います。
倉庫番のようなゲームということですがこの4つのイベントがまとめられたものはどこまで自由に動かすことができるのを想定しているのでしょうか?
倉庫番のようなゲームということですがこの4つのイベントがまとめられたものはどこまで自由に動かすことができるのを想定しているのでしょうか?
Re: 複数のイベントを同時に移動する方法
コメントありがとうございます。
現在、左から右へ押すパターンに絞って実験中です。
すり抜けの位置、ウェイトの位置等、プレイヤーのウェイトなど、色々試してみましたが、
どこかしらのブロックが分離したり、動かなかったりします。
まだ原因や法則が突き止められません。
「ブロックが他のブロックにぶつかってそれ以上動かせない処理」をコモンイベントで判定することにしました。
コモンイベント内で、「指定位置の情報取得」を利用しブロックの向こう側のイベントIDを判定し、0ならスイッチonにするよう仕込んでいます。
スクリーンショットの状態だと、なぜか右上のみがうごかず、です。
障害物も無いのに、なぜなのでしょう……
〜〜〜追記2/24。
下から上に押す場合と、右から左に押す場合は、
ウェイトもすり抜けも入れず、移動ルートの設定「左に移動(上に移動)」だけで、
全部想定通り動いてくれました。
上から下に押す場合と、左から右に押す場合は、
一部が動かず分離します。……なぜじゃ。
〜〜〜
倉庫番と表現しましたが、
邪魔なブロックをどけて仲間キャラを助けにいくようなイベントを作っています。
どうしても4マスの塊で動かしたい……。
現在、左から右へ押すパターンに絞って実験中です。
すり抜けの位置、ウェイトの位置等、プレイヤーのウェイトなど、色々試してみましたが、
どこかしらのブロックが分離したり、動かなかったりします。
まだ原因や法則が突き止められません。
「ブロックが他のブロックにぶつかってそれ以上動かせない処理」をコモンイベントで判定することにしました。
コモンイベント内で、「指定位置の情報取得」を利用しブロックの向こう側のイベントIDを判定し、0ならスイッチonにするよう仕込んでいます。
スクリーンショットの状態だと、なぜか右上のみがうごかず、です。
障害物も無いのに、なぜなのでしょう……
〜〜〜追記2/24。
下から上に押す場合と、右から左に押す場合は、
ウェイトもすり抜けも入れず、移動ルートの設定「左に移動(上に移動)」だけで、
全部想定通り動いてくれました。
上から下に押す場合と、左から右に押す場合は、
一部が動かず分離します。……なぜじゃ。
〜〜〜
倉庫番と表現しましたが、
邪魔なブロックをどけて仲間キャラを助けにいくようなイベントを作っています。
どうしても4マスの塊で動かしたい……。
Re: 複数のイベントを同時に移動する方法
指定の座標の正面が通行可能かを判定するスクリプトはあるのでそれを使って説明します。$gameMap.isPassableというものがあるのですが、ここでは$gamePlayer.canPassを使っています。
プレイヤーの位置から見て④番は正面になります。ここで⑥と⑦のイベントの下に障害物があるかを判定します。
■下向き
コード: 全て選択
$gamePlayer.canPass(this.character(6).x, this.character(6).y, this.character(-1).direction()) && $gamePlayer.canPass(this.character(7).x, this.character(7).y, this.character(-1).direction())
プレイヤーが下に押そうとする場合、判定するのは⑥と⑦だけなのでthis.character(-1).direction()でプレイヤーの向きをそのまま判定に含めています。障害物が無いと判定されれば④⑤⑥⑦の全てのイベントが同時に動けるという形になります。これが下を向いているときの判定なので左向き、右向き、上向きを作ればいいです。
■左向き
コード: 全て選択
$gamePlayer.canPass(this.character(4).x, this.character(4).y, this.character(-1).direction()) && $gamePlayer.canPass(this.character(6).x, this.character(6).y, this.character(-1).direction())
■右向き
コード: 全て選択
$gamePlayer.canPass(this.character(5).x, this.character(5).y, this.character(-1).direction()) && $gamePlayer.canPass(this.character(7).x, this.character(7).y, this.character(-1).direction())
■上向き
コード: 全て選択
$gamePlayer.canPass(this.character(4).x, this.character(4).y, this.character(-1).direction()) && $gamePlayer.canPass(this.character(5).x, this.character(5).y, this.character(-1).direction())
最後に移動ルートの仕様ですが、イベント命令で一番下のイベントにだけ完了までウェイトをチェックすればウェイトを挟まなくてもイベントが動き終わるまでプレイヤーは動かないので覚えておいたほうがいいです。
あとはこれをコモンイベントにいれてそれぞれのイベントからコモンイベントを呼び出せばいいです。
Re: 【解決済み】複数のイベントを同時に移動する方法
丁寧な解説ありがとうございます!
無事教えていただいたスクリプトで、想定通りの動きをさせることができました。
このスクリプトのお陰で、コモンイベントがシンプルになってくれたし、
加えて、2×2以外の違う形の塊にも導入できまして、パズル創作の幅が広がりました。
ウェイトの仕様に関しても勉強になりました。一つ謎が解けた心地です。重ねて感謝もうしあげます!
この質問は、これにて解決済みとします。
無事教えていただいたスクリプトで、想定通りの動きをさせることができました。
このスクリプトのお陰で、コモンイベントがシンプルになってくれたし、
加えて、2×2以外の違う形の塊にも導入できまして、パズル創作の幅が広がりました。
ウェイトの仕様に関しても勉強になりました。一つ謎が解けた心地です。重ねて感謝もうしあげます!
この質問は、これにて解決済みとします。