unity 的動態創建對象和對象碰撞消息


  • 1.多個GameObject 的隨機抽取

public GameObject[] hazards;

void Fun()

{

  // 從多個gamObj中抽取一個

GameObject o = hazards [Random.Range (0, hazards.Length)];
Vector3 p = new Vector3 (x, y, z);
Quaternion q = Quaternion.identity;
Instantiate(o, p, q); // 如果你要獲取你創建的Obj則將這行改為下面這行

// 創建隨機的Obj並賦值

GameObject newForest = GameObject.Instantiate(o, p, q) as GameObject;               

newForest.transform.parent = this.transform; // 設置產生的新對象的父類為當前場景

 

}

 

  • 2.碰撞機(collider)的消息發送

OnTriggerEnter  當碰撞器other進入觸發器時OnTriggerEnter被調用。

OnTriggerExit 當碰撞器other停止觸動觸發器時,OnTriggerExit被調用。

OnTriggerStay 每個碰撞器other觸動觸發器,幾乎在所有的幀OnTriggerStay被調用。

OnCollisionEnter 當collider/rigidbody開始觸動另一個rigidbody/collider時OnCollisionEnter被調用。

OnCollisionExit 當 collider/rigidbody停止觸動另一個 rigidbody/collider時,OnCollisionExit被調用。

OnCollisionStay 每個collider/rigidbody觸動rigidbody/collider,將在每幀調用OnCollisionStay。

詳見Collider幫助文檔:http://game.ceeger.com/Script/Collider/Collider.html

用例:  

void OnTriggerExit(Collider other)

{

if (other.gameObject.name == "foods")

{GameObject.Destroy(other.gameObject);}

}

//不需手動調用, 只要應用在某Obj上,產生碰撞停止消息即會自動調用。

條件:應用事件的物體必須有collider並勾選is Trigger、rigidbody、並且是本身是運動的(這點是為什么???誰能告訴我,糾結了很久,一直想不明白)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM