探索アクション制作日記
2023.05.05 半透明になる通り抜けられる壁・背景画像の表示・アイテム追加
半透明になる通り抜けられる壁
-
通り抜けられる壁に入ったら壁が半透明になる演出を実装していたが、Triggerを検出しない事態が発生。
-
結論としては、Layerの衝突判定をOFFにしていたのが原因だった(参考リンクみて解決)
-
それとは別に、通り抜けられる壁に入ったら重力がおかしくなる現象も発生。
-
これはよくよくコードを読んでいったらハシゴ用に実装していたメソッドの条件分岐がおかしかった。
-
OnTriggerStay2D内でtagチェックして、ハシゴにつかまっているときだけ重力無効にしたところ解決。
-
もう1つ、通り抜けられる壁に入っている間ジャンプ用の着地判定がされない現象も発生。
-
結論としては、通り抜けられる壁に入っている間、壁と同じLayerに入っていたため Laycast が正常に動かないのが原因だった。
-
さらにさらに、今度は壁の中でジャンプすると OnTriggerExit を検知してしまって壁の半透明が解除されるという問題が発生
-
結論としてはTilemapのColliderをComposite Colliderにしていたことが原因
-
感覚的な表現になるが OnTriggerExit が呼ばれるのは「(Gizmo表示したときの)緑色の線と交わらなくなったとき」という条件の模様で、緑色の線の内側に入り切ってしまったときも”抜けた”と判断されているっぽかった。
-
対応としてはColliderを普通のBoxColliderに変えて常に緑色の線と自キャラが交わるようにすることで解決。
背景画像の表示
-
背景画像をStable Diffusionで生成してみたので(これはこれですげーのがあっという間にできたのですげー)マップごとに背景画像を表示する仕組みの実装を進める。
-
Prefab化した画像の親オブジェクトをメインカメラに指定して追従させてやろうとしたところ「resides in a prefab is disabled to prevent data corruption」みたいなエラーが出て動かず。
-
これは、GameObjectに指定したPrefabをInstantiateしていなかったのが原因。
-
しかもこのやり方では結局カメラに映らなかったので、共通のUpdateメソッドで画像位置を補正するというなんとも力業で背景を出すことにした。
アイテム追加
-
能力開放アイテムを追加。
-
能力はすでにフラグ化していたので、フラグ状態に応じて表示・非表示を切り替える機能も実装。
参考リンク
OnCollisionEnterが検知されない原因の推察
https://dkrevel.com/oncollisionenter-not-working/