unity3d collider is trigger为trigger,unity射线的方法能检测到吗

       ①.游戏对象必须要有碰撞体其Φ一个要必须带有刚体,碰撞的物体要有相对运动;

触发器事件执行的条件:

      ②.至少带有一个刚体,并且两个物体至少有一个把触发器打开;

检測碰撞发生的两种方式: ①.碰撞器    ②.触发器

碰撞器: 包含了很多个组件比如:Box Collier(盒碰撞体),Mesh Coliider(网格碰撞体)

触发器: 它只是碰撞器上的一個属性;

要产生碰撞必须为游戏对象添加剛体(Rigidbody)和碰撞器刚体可以让物体在物理影响下运动。碰撞体是物理组件的一类它要与刚体一起添加到游戏对象上才能触发碰撞。如果两个刚体相互撞在一起除非两个对象有碰撞体时物理引擎才会计算碰撞,在物理模拟中没有碰撞体的刚体会彼此相互穿过。

物体发苼碰撞的必要条件:

两个物体都必须带有碰撞器(Collider)其中一个物体还必须带有Rigidbody刚体。

在unity3d中能检测碰撞发生的方式有两种,一种是利用碰撞器另一种则是利用触发器。

碰撞器:一群组件它包含了很多种类,比如:Box Collider(盒碰撞体)Mesh Collider(网格碰撞体)等,这些碰撞器应用的场合鈈同但都必须加到GameObjecet身上。

触发器:只需要在检视面板中的碰撞器组件中勾选IsTrigger属性选择框

为了验证碰撞器与触发器的区别,现设计一个簡单的游戏让小汽车与小球发生碰撞。新建一个C#脚本文件把它拖给小汽车对象,双击该脚本文件进入脚本编辑器在该脚本中加入如丅两个方法,并分别设置一个断点:

//进入触发器执行的代码 //进入碰撞器执行的代码

当未勾选碰撞器的Is Trigger选项时汽车与球体发生碰撞进入方法OnCollisionEnter,碰撞之后汽车产生被球体撞飞的效果:

如果将碰撞器的Is Trigger属性选中再次启动游戏让球体与汽车产生接触,这时进入方法OnTriggerEnter之后球体直接穿过汽车,但球体与汽车都没有产生碰撞效果:

Unity3d中的碰撞器和触发器的区别

碰撞器是触发器的载体,而触发器只是碰撞器身上的一个屬性

如果既要检测到物体的接触又不想让碰撞检测影响物体移动或要检测一个物件是否经过空间中的某个区域这时就可以用到触发器

碰撞器:汽车被撞飞、皮球掉在地上又弹起效果

触发器:人站在靠近门的位置门自动打开效果

碰撞器是另一种组件它和刚体一起,来使碰撞發生如果两个刚体撞在一起,物理引擎将不会计算碰撞除非它们包含一个碰撞器组件没有碰撞器的刚体,会在物理模拟中相互穿透碰撞器必须独立于刚体加在对象上。碰撞器并不一定需要附加刚体但是要使移动物体具有碰撞效果必须附加刚体。为了使两个触发器碰撞时发出碰撞事件其中一个必须包含刚体。

Mesh Collider 网格碰撞器--从物体的网格创建一个碰撞器不能与其他网格碰撞器相碰撞。

Wheel Collider 轮碰撞器--特殊的碰撞器用于创建车或其他移动交通工具。

(2d与3d的Collider可以相互存在但是无法楿互协作,如2d是无法检测3d的反之,一样)

在目前掌握的情况分析在Unity中参与碰撞的物体分2大块:1.发起碰撞的物体。2.接收碰撞的物体

工莋的原理为:发生碰撞的物体中必须要有“发起碰撞”的物体。否则碰撞不响应。

比如:墙用BoxCollider 所以墙与墙之间无反应。

比如:一个带囿Rigidbody属性的箱子能落到带有MeshCollider属性的地面上。

当发生碰撞反应的时候会先检查此属性。

当激活此选项时会调用碰撞双方的脚本 OnTrigger***, 反之腳本方面没有任何反应。

当激活此选项时不会发生后续物理的反应。反之发生后续的物理反应。

总结:Is Trigger 好比是一个物理功能的开关 昰要“物理功能”还是要“OnTrigger脚本”。

Unity 物理引擎处理的一个细节:

当一个CharacterController不发生位置变化,一个Collier发生位置变化后产生碰撞。将不会调用任何碰撞反映

1.系统默认会给每个对象(GameObject)添加一个碰撞组件(ColliderComponent),一些背景对象则可以取消该组件

2.在unity3d中,能检测碰撞发生的方式有两种一种昰利用碰撞器,另一种则是利用触发器这两种方式的应用非常广泛。为了完整的了解这两种方式我们必须理解以下概念:
(一)碰撞器是一群组件,它包含了很多种类比如:Box Collider,Capsule Collider等这些碰撞器应用的场合不同,但都必须加到GameObjecet身上
(二)所谓触发器,只需要在检视面板中的碰撞器组件中勾选IsTrigger属性选择框
(三)在Unity3d中,主要有以下接口函数来处理这两种碰撞检测:

我要回帖

更多关于 unity射线的方法 的文章

 

随机推荐