[Unity] Unity3D碰撞检测的设置

查看:1620 |回复:26 | 2014-10-10 06:41:49

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 大西几 于 2021-2-24 16:36 编辑

unity碰撞类Collision,使用的前提是物体必须添加碰撞器。

Collision有三种方法:OnCollisionEnter,OnCollisionStay和OnCollisionExit。OnCollisionEnter(在碰撞发生时被系统自动调用)该方法只有两个物体都遵循物理定律的情况下发生,即两者的IsKnematic属性为false;OnCollisionStay(在碰撞时两物体接触过程中被调用);OnCollisionExit(在碰撞时停止触碰刚体或者碰撞的时候调用)。


void OnCollisionEnter(Collision collision){
if(collision.collider.tag == "hit"){
ifCollider = true;
if(collision.collider.gameObject == target){
ifColliderTrue = true;
}

}


}
另外还有一个碰撞类Trigger,使用前也是必须要添加碰撞器。

Trigger有三种方法:OnTriggerEnter,OnTriggerStay和OnTriggerExit。跟Collision的三个方法是一个意思。但是设置动的物体除了添加碰撞器之外还要添加刚体Rigidbody并且IsKnematic属性为false;静止的物体不需要添加刚体,但是Collider的IsTrigger属性为true。不知道为什么MeshCollider暂时不好用。


void OnTriggerEnter(Collider hit){

if(hit.gameObject.tag == "hit"){
ifCollider = true;
if(hit.gameObject == target){
ifColliderTrue = true;
}

}


}

void OnTriggerExit(Collider hit){

if(hit.gameObject.tag == "hit"){
ifCollider = false;
if(hit.gameObject == target){
ifColliderTrue = false;

}
}

} image.png
2014-10-10 06:41:49  
 赞 赞 2

使用道具 登录

26个回答,把该问题分享到群,邀请大神一起回答。
2#
学习了
回复 收起回复
2014-10-10 09:13:59   回复
 赞 赞 2

使用道具 登录

3#
多谢楼主共享。
回复 收起回复
2015-11-16 10:50:02   回复
 赞 赞 2

使用道具 登录

4#
楼主辛苦了
回复 收起回复
2015-11-16 10:51:04   回复
 赞 赞 2

使用道具 登录

5#
资源不错,很有帮助,谢谢您的分享。
回复 收起回复
2015-11-22 12:18:49   回复
 赞 赞 2

使用道具 登录

6#
感谢分享{:1_144:}
回复 收起回复
2015-11-25 23:26:53   回复
 赞 赞 2

使用道具 登录

7#
很详细
回复 收起回复
2018-11-11 17:04:58   回复
 赞 赞 2

使用道具 登录

8#
感谢楼主的分享~~~~谢谢了~~~~
回复 收起回复
2018-11-11 17:49:41   回复
 赞 赞 2

使用道具 登录

9#

感謝~
回复 收起回复
2018-11-12 09:02:56   回复
 赞 赞 2

使用道具 登录

10#
回复 收起回复
2018-11-22 09:05:04   回复
 赞 赞 2

使用道具 登录

11#
想要成大触,天天上元素!
回复 收起回复
2018-11-22 09:09:18   回复
 赞 赞 2

使用道具 登录

12#
感谢分享
回复 收起回复
2018-11-22 09:17:47   回复
 赞 赞 2

使用道具 登录

13#
不错的教程,谢谢分享
回复 收起回复
2018-11-22 09:33:30   回复
 赞 赞 2

使用道具 登录

14#
6666666
回复 收起回复
2018-11-22 09:39:25   回复
 赞 赞 2

使用道具 登录

15#
本帖最后由 allenkoo 于 2018-11-22 10:26 编辑

Trigger那个说得不对哦。
两个物体检测碰撞其中一个必须有Rigidbody或者Rigidbody2D(看你的用的组件)
IsKnematic没有关系。
两个物体的碰撞得设置为一样的才可以检测到。
两个都是Collision或者两个都是Trigger这样。
回复 收起回复
2018-11-22 10:24:13   回复
 赞 赞 2

使用道具 登录

16#
我这边使用的话,MeshCollider也是可以检测到和Trigger碰撞的
回复 收起回复
2018-11-22 10:25:29   回复
 赞 赞 2

使用道具 登录

17#
资源哪里好,肯定元素找!
回复 收起回复
2018-11-22 10:41:22   回复
 赞 赞 2

使用道具 登录

18#
多谢楼主分享
回复 收起回复
2018-11-22 11:03:56   回复
 赞 赞 2

使用道具 登录

19#
66666666666666666666
回复 收起回复
2018-11-22 11:45:57   回复
 赞 赞 2

使用道具 登录

20#
感谢分享
回复 收起回复
2018-12-3 11:49:33   回复
 赞 赞 2

使用道具 登录

CG 游戏行业专业问题

Unity3D技术手机游戏引擎手游引擎
12下一页
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表