質問: Platform Effector 2Dのすり抜け床。 Platform Effector 2DのUse One Wayを使ってすり抜け床を作ったんですが、すり抜け中もOnCollisionStay2Dが呼び出されてしまいます。 どうにかして回避できないのでしょうか?
回答: Platform Effector 2Dですり抜け中もOnCollisionStay2Dが呼ばれるのは、 "Unity的には"正しい挙動だと思います。 なので、"実際にやりたいこと"を実現するための調整をすることになりますが、 その正解は「何をやりたいか」によって変わってくると思います。 つまり、何をしようとしてOnCollisionStay2Dを使おうとしたのかが不明だと 若干答えづらいです。 「台に乗った時」のみ処理する場合は、OnCollisionEnter2Dを用いれば 法線を用いて次のように書けます。 void OnCollisionEnter2D(Collision2D collision) { if (collision.contacts[0].normal.y > -0.5f) {return;} Debug.Log("Hoge"); // ここにやりたい処理 } 「台に乗り続けたとき」の場合多少難しそうです。 OnCollisionStay2Dの場合、接触点も使って判定するか、 あるいはOnCollisionEnter2DとOnCollisionExit2Dを用いて 「台に乗ったGameObject」をリストで管理するか、あたりが思い浮かびます。