[英]Collision in Unity3d in an intervall?
我對以下方法有疑問
void OnCollisionEnter2D(Collision2D ext_coll)
{
// Do something
}
除一種情況外,此方法可以完美地工作。 可以說我要不斷檢查,例如每10毫秒一次,或者如果我在地面上就需要檢查,這意味着我是否發生碰撞。 對撞機方法只運行一次! 意味着當我與某事發生沖突時,僅此而已。 我想要的是可以不斷檢查是否發生碰撞的東西,例如:
10MS -> NOT COLLIDING
20MS -> NOT COLLIDING
30MS -> NOT COLLIDING
40MS -> NOT COLLIDING
50MS -> COLLIDING
60MS -> COLLIDING
70MS -> COLLIDING
80MS -> NOT COLLIDING
90MS -> NOT COLLIDING
我真的需要經常檢查。 有人對此有好的解決方案嗎?
提前非常感謝您!
我可以想到2種方法: OnCollisionStay和Physics.CheckSphere
OnCollisionStay
對於每一個與剛體/碰撞體接觸的碰撞器/剛體,OnCollisionStay每幀調用一次。
在您的情況下,您可以執行以下操作:
public class ExampleClass : MonoBehaviour {
void OnCollisionStay() {
// Do Something
}
}
物理檢查球
如果球體內有任何碰撞體,則Physics.CheckSphere返回true 。 (如果需要對撞機列表,請使用Physics.OverlapSphere )。
下面的代碼將檢查每幀(無論何時調用更新)在定義的球體內是否存在任何對撞機。
public class ExampleClass : MonoBehaviour {
public float sphereRadius;
void Update() {
if (Physics.CheckSphere(transform.position, sphereRadius))
//Do something
}
}
(如果要定義自己的間隔而不是每個幀,則可以將代碼放在這兩種方法的協同例程中)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.