我有兩個函數,一個是OnCollisionEnter2D,一個是OnTriggerEnter2D。我需要Collision2D轉換爲Collider2D反之亦然:Unity - 將Collider2D轉換爲Collision2D
// c# script
void OnCollisionEnter2D(Collision2D collision) {
foo(collision);
}
void OnTriggerEnter2D(Collider2D collider) {
foo(collider);
}
void foo(Collision2D coll){
//checking inside here
}
當然,這是不會編譯,因爲我給foo的對撞機,對撞機並沒有一個Collision2D。 I have noticed that these two data types are almost the same。我不能投這兩個。有人可以幫助我轉換或建議一種解決方法嗎?
在此先感謝!
編輯:
這是我的檢查代碼...
int coins;
void Start(){
coins = 0;
}
void foo(Collision2D coll){
if(coll.gameObject.tag == "coin"){
coins++;
}
//this works for both Collision2D and Collider2D because both have the gameObject property
}
謝謝!這真是太棒了...有沒有一種方法可以做到這一點,而不必在兩個重載之間複製和粘貼代碼?那麼, – yummypasta
。 TBH碰撞組件只能表現爲觸發器或碰撞器。因此,爲一個碰撞組件註冊'OnCollisionEnter()'和'OnTriggerEnter()'是沒有用的。如果你真的告訴我你正在嘗試做什麼,我可以提供更多的幫助,所以請發佈'foo()'的實現。 –
當您在遊戲開發中處理關鍵性能代碼時,請嘗試通過減少計算來編寫優化且高效的代碼。重複代碼在這裏沒什麼大不了的。 –