Unityを始めたばかりの初心者です。
オブジェクトにコライダを割り当てて、衝突判定を行う際、OnCollisionEnter等を使うと思うのですが、
例えば、Update内で「(1フレーム内に)衝突判定がfalseになるまでtransform.yを1ずつ加算する処理」を作るとして、whileでtransform.yを1ずつ加算、衝突判定がfalseならループを抜け出す、ように組みたいとします。
その際、Updateとは別のメソッドであるOnCollisionEnterではwhileの中で随時衝突判定を行うことができません。
Update内で随時衝突判定を行うことは可能でしょうか?
試したこと
Updateの中にOnCollisionEnterのメソッドを入れてみる(失敗)
そもそも衝突したときに呼び出されるメソッドなのに使えるわけありませんよね...
「OnCollisionStay」を利用すると、接触している間は各フレームで処理が呼び出されます。
「OnCollisionStay」は利用せず、Updateをどうしても利用したいということでしょうか。
Updateを利用する場合は、「OnCollisionEnter」と「OnCollisionExit」でフラグの書き換えを行って、Update内でフラグ判定を追加すれば対応できそうな気がいたします。
例:OnCollisionEnterでフラグをTrue / OnCollisionExitでフラグをFalse に書き換える
・OnCollisionEnterなどの参考サイト
https://www.sejuku.net/blog/83742
やはりそれらのメソッドでしか衝突判定は行えないのですね...
仮にフラグの書き換えを行ったとして、Update内で処理をしますが、どうしても1フレームを使ってしまいます。
自分が言いたいのは、Update内で何回も好きなように衝突判定を呼び出せるようのものがあるかということです。
・衝突しているかどうか判定するメソッド
・衝突しているかどうかをbool型で返すような変数
等
どのようなコードを想定しているのか分かりませんが、Update内でwhileループとはどういうことなのでしょう?
回答1件
あなたの回答
tips
プレビュー