OnCollisionStayはrigidbody/colliderが他のrigidbody/colliderに触れている間毎フレーム1度だけ呼び出されます。
OnTriggerStayとは対照的にOnCollisionStayはコライダーではなくCollisionが渡されます。 Collisionには接触点、衝突した速度などの情報が含まれています。 この関数のcollisionInfoを使用しない場合はcollisionInfoパラメーターを省略することで無駄な計算を回避することが出来ます。 複数あるコライダーのうち1つにKinematicではないRigidbodyがアタッチされている場合、衝突イベントはそのコライダーのみに送信されることに注意してください。
function OnCollisionStay(collisionInfo : Collision) { // Debug-draw all contact points and normals for (var contact : ContactPoint in collisionInfo.contacts) { Debug.DrawRay(contact.point, contact.normal * 10, Color.white); } }
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { void OnCollisionStay(Collision collisionInfo) { foreach (ContactPoint contact in collisionInfo.contacts) { Debug.DrawRay(contact.point, contact.normal * 10, Color.white); } } }
import UnityEngine import System.Collections public class ExampleClass(MonoBehaviour): def OnCollisionStay(collisionInfo as Collision) as void: for contact as ContactPoint in collisionInfo.contacts: Debug.DrawRay(contact.point, (contact.normal * 10), Color.white)