unity3d碰撞

西北逍遥發表於2024-07-23

unity3d碰撞

Unity3D提供了多個碰撞事件函式,用於處理不同型別的碰撞情況。常用的碰撞事件函式包括:

OnCollisionEnter:當兩個物體開始碰撞時觸發。這是碰撞的起始點,可以用於執行碰撞開始時的邏輯,如播放碰撞音效、改變遊戲狀態等。

OnCollisionStay:在兩個物體持續碰撞的過程中不斷觸發。這個函式可以在物體持續碰撞時執行邏輯,如持續傷害、摩擦力效果等。

OnCollisionExit:當兩個物體結束碰撞時觸發。這個函式可以用於執行碰撞結束時的邏輯,如停止傷害、重置狀態等。

using UnityEngine;

public class CollisionExample : MonoBehaviour
{
    void OnCollisionEnter(Collision collision)
    {
        Debug.Log("Collision with " + collision.gameObject.name);
        
        // 可以根據碰撞物體的Tag或Layer來處理不同的邏輯
        if (collision.gameObject.CompareTag("Enemy"))
        {
            // 處理與敵人的碰撞
        }
        
        // 遍歷碰撞點
        foreach (ContactPoint contact in collision.contacts)
        {
            Debug.Log("Collision Point: " + contact.point);
            Debug.Log("Collision Normal: " + contact.normal);
        }
    }

    void OnCollisionStay(Collision collision)
    {
        // 持續碰撞的邏輯處理
    }

    void OnCollisionExit(Collision collision)
    {
        // 碰撞結束的邏輯處理
    }
}

###########################

相關文章