unity 的动态创建对象和对象碰撞消息

本文介绍Unity中如何实现从多个GameObject中随机选取一个进行实例化,并探讨了碰撞机(collider)的消息发送机制,包括OnTriggerEnter、OnTriggerExit、OnTriggerStay等,以及OnCollisionEnter、OnCollisionExit、OnCollisionStay的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 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、并且是本身是运动的(这点是为什么???谁能告诉我,纠结了很久,一直想不明白)

转载于:https://www.cnblogs.com/Kprogram/p/4019891.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值