unity 的动态创建对象和对象碰撞消息
2014-10-11 22:36
405 查看
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、并且是本身是运动的(这点是为什么???谁能告诉我,纠结了很久,一直想不明白)
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、并且是本身是运动的(这点是为什么???谁能告诉我,纠结了很久,一直想不明白)
相关文章推荐
- [unity基础教程]在Unity3D中动态创建对象和创建Prefab原型对象的三种方式
- Unity 3D 动态创建对象,并渲染贴图,动态添加删除脚本
- < Unity 3D专栏 >动态创建对象,并渲染贴图,动态添加删除脚本
- Unity 3D 动态创建对象,并渲染贴图,动态添加删除脚本
- [转载]利用反射动态创建对象
- 在VC中,让动态创建的ActiveX控件响应Windows消息。
- 两种动态创建对象的方法
- 动态创建JS对象
- 两种动态创建对象的方法
- 读书笔记-Thinking in C++-第13章 动态对象的创建
- 用反射动态创建对象,类型无法转换的困惑
- 动态2:由类名创建对象
- 实现运行时从字符串动态创建对象
- 利用反射动态创建对象
- .net中实现运行时从字符串动态创建对象
- VB程序中用ADO对象动态创建数据库和表
- 利用反射动态创建对象
- MFC动态创建控件的消息处理
- 动态创建一个CButton按钮并实现其ON_BN_CLICKED消息
- MFC动态创建控件的消息处理