[英]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.