簡體   English   中英

OnTriggerEnter2D 太慢

[英]OnTriggerEnter2D too slow

開始:我對 c# 和這些帖子比較陌生,盡管我有一般的編碼經驗。 前提:按照“做你想做的”的建議,我正在研究一個程序生成的地牢。 基本上,當你進入一個房間時,我需要找到你正在進入的房間的 ID(我有一個包含所有房間的鋸齒狀數組數據庫)。 雖然我嘗試了很多東西,但我最終還是讓 GameObject 的世界創建代碼是一個 zip 圍繞每個房間的特定位置(每個房間基本上適合一個更大的網格)導致我使用 OnTriggerEnter2D 作為 function返回房間的 RoomID。 例子:

    RoomID = -1;

        transform.position += Vector3.up * 14;
        Debug.Log(RoomID + " after going up");
        if (RoomID == -1) { TopConnectedRoom = false; } else { TopConnectedRoom = true; }
        transform.position += Vector3.down * 14;
        RoomID = -1;

問題:因為 OnTriggerEnter2D 的物理原理,因此在 FixedUpdate()/物理時間之外起作用,它最終觸發太慢(我可以驗證這一點,多虧了一些告訴我 RoomID 值的 Debug.Log()s並且來自實際 OnTriggerEnter 的值始終出現在最后)。 盡管這種查找 RoomID 的方法是唯一產生某種結果的方法,但我已經為此困惑了很長時間。

這是 OnTriggerEnter2D,以防你們都想要:

    public void OnTriggerEnter2D(Collider2D other)
    {
        if (other.tag == "Room")
        {
            string RoomName = other.name;
            string RoomIDString;
            Debug.Log(RoomName.Length + " room length " + RoomName);
            if (RoomName.Length >= 5) {
                int n;
                bool isNumber = int.TryParse(RoomName.Substring(4, 2), out n);
                if (isNumber) { RoomIDString = RoomName.Substring(4, 2); }
                else { RoomIDString = RoomName.Substring(4, 1); }
            } else { RoomIDString = RoomName.Substring(4, 1); }
            RoomID = int.Parse(RoomIDString);
            Debug.Log(RoomID + " from OnTriggerEnter2D");
        }
    }

您可以增加默認求解器迭代

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM