現在のコード
void OnCollisionStay(Collision i_other) { // 衝突しているオブジェクトをリストに登録する m_hitObjects.Add(i_other.gameObject.name); .....
現在はOnCollisionStayで衝突したものの名前をすべて記録するようになってます
やりたいこと 任意のタイミングで衝突判定を行いたいです
ですが測定したいタイミングでOnCollisionStayが発動せず
OnCollisionStay
測定
測定
OnCollisionStay
測定
OnCollisionStay
OnCollisionStay
......
のようにタイミングがバラバラです 測定する関数内で衝突を検出する方法はありませんか?
unityイベント実行順序と調べれば、どのタイミングでOnCollition~が実行されるかは分かるかと思います。
OnCollision~はFixedUpdateのタイミングなのでUpdateにかかわる事が処理されていればフレーム内で完結するような処理でも感覚で分かる程度のズレが生じます。(結果は同じでも動作が気持ち悪いなど)
初歩的な話だと測定がFixedUpdateで行われていない事が原因ではないか?となりますが、
そうではなく、って事ですか?
詳しい訳ではないのでここからは感覚的な話ですが、通常でUnityのPhysicsを利用している時点でFixedUpdateタイミング以外で測定と衝突の検知は難しい気がします。Physics本体がFixedUpdateの処理となっていますので。
スケールを大きくして(1秒を100秒と計算して)再現性を高めるみたいな話もネット内のどこかで見たきがします。
私は数学的知識が皆無なのでさっぱり意味がわからんな状態でしたが。
回答1件
あなたの回答
tips
プレビュー