关于Unity3d中物体之间碰撞检测的方法
2015-01-14 10:33
405 查看
检测碰撞有两种方式,一种是利用碰撞器,另外一种就是触发器。
碰撞器的种类:
1.Static Collider 静态碰撞器
指的是相互碰撞的两个物体没有附加刚体而只附加了Collider的游戏对象。这类对象在碰撞时会保持静止,发生碰撞时不会触发任何的方法函数。
2.Rigidbody Collider 刚体碰撞器
在静态碰撞器的基础上,处于运动状态的物体必须要附加刚体组件和带有碰撞检测函数的脚本,被撞的物体可以没有刚体组件或碰撞检测脚本。当两个物体发生碰撞时,带有刚体组件的物体会发生物理特性,如被撞飞,或有摩擦力的影响下移动一段距离。
3.Kinematic Rigidbody Collider 运动学刚体碰撞器
在第2点得基础上勾选了刚体组件中的IsKinematic属性,在发生碰撞时能检测到碰撞,但是勾选ISkinematic属性的物体不会因为撞击而发生位移,它任待在原地不动,若要想让它发生移动,只能用transform.translate的方法。(如果要移动这类对象,就只能修改它的Transform,而不是用力)
触发器:
这三种碰撞器如果被撞击的物体的Collider勾选了IsTrigger复选框,就变成了相应的触发器了,若此时该物体被撞击,撞击该物体的对象会穿进被撞的物体中,同时触发void OnTriggerEnter(Collider other)方法。
碰撞器的检测函数:(只有带刚体的碰撞才能触发检测函数,而且处于运动中的物体必须带检测函数的脚本,other.gameObject为撞击中的对方物体)
void OnCollisionEnter(Collision other);
void OnCollisionStay(Collision other);
void OnCollisionExit(Collision other);
触发器的检测函数:(任何带有触发器的碰撞都能触发检测函数)
void OnTriggerEnter(Collider other);
void OnTriggerStay(Collider other);
void OnTriggerExit(Collider other);
碰撞器的种类:
1.Static Collider 静态碰撞器
指的是相互碰撞的两个物体没有附加刚体而只附加了Collider的游戏对象。这类对象在碰撞时会保持静止,发生碰撞时不会触发任何的方法函数。
2.Rigidbody Collider 刚体碰撞器
在静态碰撞器的基础上,处于运动状态的物体必须要附加刚体组件和带有碰撞检测函数的脚本,被撞的物体可以没有刚体组件或碰撞检测脚本。当两个物体发生碰撞时,带有刚体组件的物体会发生物理特性,如被撞飞,或有摩擦力的影响下移动一段距离。
3.Kinematic Rigidbody Collider 运动学刚体碰撞器
在第2点得基础上勾选了刚体组件中的IsKinematic属性,在发生碰撞时能检测到碰撞,但是勾选ISkinematic属性的物体不会因为撞击而发生位移,它任待在原地不动,若要想让它发生移动,只能用transform.translate的方法。(如果要移动这类对象,就只能修改它的Transform,而不是用力)
触发器:
这三种碰撞器如果被撞击的物体的Collider勾选了IsTrigger复选框,就变成了相应的触发器了,若此时该物体被撞击,撞击该物体的对象会穿进被撞的物体中,同时触发void OnTriggerEnter(Collider other)方法。
碰撞器的检测函数:(只有带刚体的碰撞才能触发检测函数,而且处于运动中的物体必须带检测函数的脚本,other.gameObject为撞击中的对方物体)
void OnCollisionEnter(Collision other);
void OnCollisionStay(Collision other);
void OnCollisionExit(Collision other);
触发器的检测函数:(任何带有触发器的碰撞都能触发检测函数)
void OnTriggerEnter(Collider other);
void OnTriggerStay(Collider other);
void OnTriggerExit(Collider other);
相关文章推荐
- 关于Unity3d中物体之间碰撞检测的方法
- Unity3D 网格碰撞器Mesh Collider之间和原型碰撞器(Box Collider等)的碰撞检测
- Unity3D导入的FBX场景模型设置物体之间的碰撞
- 多物体碰撞检测方法
- Unity3d中物体的的碰撞检测
- unity3d导入模型设置模型之间的物体碰撞
- 关于碰撞面检测方法
- 【Unity3D】利用物体碰撞检测、键盘输入处理完成平衡球游戏
- Unity3D导入的FBX场景模型设置物体之间的碰撞
- Unity3d 物体碰撞检测前提条件(OnTrigger触发条件)
- 关于Excel的导出问题(.net方法与javascript方法之间的讨论)
- 关于 Flash 中的碰撞检测
- 关于H3C iNode防代理功能会将pplive等软件检测为代理而下线问题的解决方法
- 关于多对多影片的碰撞检测解决办法
- 关于ASP.NET同页面内【用户控件与父页面】以及【用户控件与用户控件】之间方法调用/传值 一点点经验
- 关于数组和List之间相互转换的方法
- [java]关于数组和List之间相互转换的方法
- 关于ASP.NET同页面内【用户控件与父页面】以及【用户控件与用户控件】之间方法调用/传值 一点点经验
- 关于碰撞检测和物理引擎
- 关于数组和List之间相互转换的方法