レイヤ追加すると衝突判定が消える問題

3日間くらいハマったので、備忘録として残します。

PMOを使って電車内を再現した横ACTを作成しているのですが、妙なバグに悩まされていました。とりあえず解決しましたので、忘れない内に記事にします。ワケワカメです。

プレイヤーの衝突判定はあるのに、敵の衝突判定だけが無くなり奈落へと落ちていってしまうバグ

結論から言うと、開始時以外のタイミングでオブジェクトを生成した際は、必ずレイヤの一番下に生成される…という仕様が原因でした。

よって解決法はオブジェクト生成時に任意の動作レイヤに移動させてやるです。長かった…

経緯

背景と動作するオブジェクトを分けたいな~。そうだレイヤ機能を利用してみようと思いたったので、早速分割してみました。

  1. 動作オブジェクト
  2. 背景
  3. 背景の背景
  4. 足場

こんな感じにしてみて、早速動作テストをしてみましたが…

全部奈落へ落ちていきました…

まあこの程度の不具合は想定内というか日常なので、さっそく原因を調べました。少しググったりしましたが、さすがのCF2.5です。情報が全く無い!

仕方がないので先輩方がたくさんいる2chゲ製板でアドバイスを伺った所、

レイヤ間は衝突判定が無くなるから、足場となるオブジェクトは、アクティブオブジェクトと同一レイヤにしなさい!

とのアドバイスを頂けました!これはやったぜ!と思いレイヤ構造を以下のように修正してみました。

  1. 動作オブジェクト + 足場
  2. 背景
  3. 背景の背景

ところが、奇妙な動作を見せました。

プレイヤーの衝突判定は残っているのに、敵キャラの衝突判定が無くなっているのです…

色々ググったりパラメータいじったりしてみても変わりません。面倒になった私は問題を放置してお絵かきしていたのですが、突然天啓がビビーンと来ました

もしかして違うレイヤに生成されているのでは無いか…?プレイヤーはフレーム開始時に生成されているからレイヤの一番上にいるが、敵はループで生成しているからなんじゃ…CF2.5の仕様…?

試してみた

順序 → レイヤーに移動

で一番上のレイヤーを指定してみました。するとドンピシャ!見事に動作しました…長かった…

本当の恐怖はこれからだった

記事に残すため、動作確認用に上記の順序 → レイヤーに移動の命令を削除して動かした所…

普通に動いている…

ワケワカメです。じゃあ今まで何で動かなかったのよ…

コメントを残す

メールアドレスが公開されることはありません。