- 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、並且是本身是運動的(這點是為什么???誰能告訴我,糾結了很久,一直想不明白)
