关闭

8.31碰撞触发

229人阅读 评论(0) 收藏 举报
要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动。碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞。如果两个刚体相互撞在一起,除非两个对象有碰撞体时物理引擎才会计算碰撞,在物理模拟中,没有碰撞体的刚体会彼此相互穿过。
物体发生碰撞的必要条件
两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体。
在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器。
 
碰撞器:一群组件,它包含了很多种类,比如:Box Collider(盒碰撞体),Mesh Collider(网格碰撞体)等,这些碰撞器应用的场合不同,但都必须加到GameObjecet身上。
触发器,只需要在检视面板中的碰撞器组件中勾选IsTrigger属性选择框。
 
触发信息检测:
1.MonoBehaviour.OnTriggerEnter(Collider collider)当进入触发器
2.MonoBehaviour.OnTriggerExit(Collider collider)当退出触发器
3.MonoBehaviour.OnTriggerStay(Collider collider)当逗留触发器
 
碰撞信息检测:
1.MonoBehaviour.OnCollisionEnter(Collision collision) 当进入碰撞器
2.MonoBehaviour.OnCollisionExit(Collision collision) 当退出碰撞器
3.MonoBehaviour.OnCollisionStay(Collision collision)  当逗留碰撞器
 
两个物体相接触时到底执行OnTriggerEnter还是执行OnCollisionEnter方法,这两个又有什么区别呢?
为了验证碰撞器与触发器的区别,现设计一个简单的游戏,让小汽车与小球发生碰撞。新建一个C#脚本文件,把它拖给小汽车对象,双击该脚本文件进入脚本编辑器,在该脚本中加入如下两个方法,并分别设置一个断点:
复制代码
void OnTriggerEnter(Collider collider)
{
     //进入触发器执行的代码
}
void OnCollisionEnter(Collision collision) 
{
     //进入碰撞器执行的代码
}
复制代码
当未勾选碰撞器的Is Trigger选项时汽车与球体发生碰撞,进入方法OnCollisionEnter,碰撞之后汽车产生被球体撞飞的效果:
如果将碰撞器的Is Trigger属性选中,再次启动游戏让球体与汽车产生接触,这时进入方法OnTriggerEnter。之后球体直接穿过汽车,但球体与汽车都没有产生碰撞效果:
unity3d中的碰撞器和触发器的区别?
 
碰撞器是触发器的载体,而触发器只是碰撞器身上的一个属性
当Is Trigger=false时,碰撞器根据物理引擎引发碰撞,产生碰撞的效果,可以调用OnCollisionEnter/Stay/Exit函数;
当Is Trigger=true时,碰撞器被物理引擎所忽略,没有碰撞效果,可以调用OnTriggerEnter/Stay/Exit函数。
 
如果既要检测到物体的接触又不想让碰撞检测影响物体移动或要检测一个物件是否经过空间中的某个区域这时就可以用到触发器
 
例子:
碰撞器:汽车被撞飞、皮球掉在地上又弹起效果
触发器:人站在靠近门的位置门自动打开效果
0
0
查看评论

Unity中碰撞时触发事件

如果要触发碰撞事件,必须具备如下条件: 碰撞双方都要有碰撞,至少有一个有刚体组件,双方Collider至少有一个开启Is Trigger。 Is Trigger指示,碰撞器是否是一个触发器,这样发生碰撞时才能触发事件。 Messages 消息(摘自Unity圣典) OnCollis...
  • u010698150
  • u010698150
  • 2016-09-20 11:58
  • 6820

关于Unity碰撞和触发的总结

本文总结一下Unity中的碰撞器和触发器的相关问题。
  • watinwaay
  • watinwaay
  • 2016-02-27 18:58
  • 2080

[unreal4入门系列之十四] 在UE4中添加碰撞触发事件

一、在HUD中显示消息 1) 在MyHUD.h中定义一个结构来表示我们的消息: #pragma once#include "GameFramework/HUD.h"#include "MyHUD.generated.h"//该结构体表示我们要显示的...
  • u013131744
  • u013131744
  • 2016-11-22 13:41
  • 1461

(第十章)Unity3D-脚本的碰撞与触发

我们在游戏里经常会看到,某两个物体发生碰撞之后zon
  • u011507161
  • u011507161
  • 2014-11-02 13:01
  • 3070

unity 所有碰撞器(触发器),碰撞条件、结果,触发条件、结果。。。以及碰撞函数、触发函数的调用。

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

写在前面的 unity碰撞触发事件

首先想要触发事件,无论是OnTriggerEnter( Collider other )当进入触发器或者是
  • wstxdxyx
  • wstxdxyx
  • 2014-05-28 19:42
  • 657

UE4里启动物件的碰撞机制

在UE4里面有时候 会发现当某个静态物件拖拽上去后,并没有碰撞机制 如图所示: 人直接穿过去 其实很简单:一般在Mesh里面我们见到的是 Default默认的是Use Simple Collision As Complex,只需将其调为Use Complex Collision ...
  • LN_Polaris
  • LN_Polaris
  • 2016-07-21 11:15
  • 1377

Unity学习笔记(一):碰撞体(Collider),触发器(Trigger),刚体(RigidBody)

碰撞体(Collider),触发器(Trigger),刚体(RigidBody)的相关区分官方解释 刚体(Rigidbody):Rigidbody(刚体)组件可使游戏对象在物理系统的控制下来运动,刚体可接受外力与扭矩力用来保证游戏对象像在真实世界中那样进行运动。任何游戏对象只有添加了刚体组件才能受到...
  • Lilinyuanvr
  • Lilinyuanvr
  • 2017-01-12 13:50
  • 1007

8.31

八月份的尾巴。开始更新DP题解。没错我是ACMer的一员。通过比赛结识到了让人很开心的朋友。那么下一步就是,享受coding的乐趣,提高思维能力,向一个能够有所作为的青年的目标努力。今天是2015.8.31,从今天起,人生还有无限的可能。
  • gungnir0711
  • gungnir0711
  • 2015-08-31 18:47
  • 125

碰撞与触发事件

1.发生碰撞的两个物体必须都带有Collider 2.发生碰撞的两个物体至少有一个带有刚体 3.发生碰撞的两个物体必须有相对运动 public void OnCollisionEnter(Collision collision) { // print("碰...
  • renlangwww
  • renlangwww
  • 2017-07-02 16:16
  • 134
    个人资料
    • 访问:13784次
    • 积分:201
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:16篇
    • 译文:1篇
    • 评论:1条
    最新评论