1,测试OnTriggerEnter和OnCollisionEnter的区别

测试:如果两个物体A,B

两者都有碰撞体collider(Box Collider,Sphere Collider,Capsule Collider等)

A,B都有刚体(Rigidbody)

A或者B中有一个勾选isTrigger或者两者都勾选isTrigger
A和B都可以进入OnTriggerEnter方法,但是不可进入OnCollisionEnter方法。

A和B都不勾选isTrigger,A和B能进入OnCollisionEnter方法但是不能进入OnTriggerEnter方法。

结论:

OnCollisionEnter方法必须是在两个碰撞物体都不勾选isTrigger的前提下才能进入,反之只要勾选一个isTrigger那么就能进入OnTriggerEnter方法。

OnCollisionEnter和OnTriggerEnter是冲突的不能同时存在的。

2,OnTriggerEnter和OnCollisionEnter的选择

如果想实现两个刚体物理的实际碰撞效果时候用OnCollisionEnter,Unity引擎会自动处理刚体碰撞的效果。

如果想在两个物体碰撞后自己处理碰撞事件用OnTriggerEnter。

3,一些技巧

3.1:刚体(Rigidbody)的使用。

​ 两个碰撞的物体A 和 B

​ 现在我们就可以分两种模式来分析了,就是OnTrigger模式和OnCollision模式,因为上面已经详细介绍了两者是对立的模式,

​ 在OnCollision模式下:


测试1:如果只有A有刚体(Rigidbody),那么当A去碰撞B时,发现A弹开B没有动。A和B都进入OnCollisionEnter方法

​ 结论1:只有刚体能实现真实的物理碰撞。


测试2:如果只有A有刚体(Rigidbody),那么当B去碰撞A时,发现没有碰撞效果,A和B都没有进入OnCollisionEnter方法。

​ 结论2:实现碰撞的条件是,发起碰撞方必须具有刚体。

​ 这里我猜测了刚体是用来实现物理真实碰撞的Component,但是这个想法是错误的,因为OnTriggerEnter也必须有一个物体具有刚体,所以猜测刚体应该是一个判断是否实现碰撞的是与否的标志。

​ 在OnTrigger模式下:

​ A和B必须有一个有刚体(Rigidbody),A和B都可以进入OnTriggerEnter方法。

4,知识扩展。

上面的内容中有的实验是A,B有一个有刚体,有的实验是A,B都有刚体,那么为什么不干脆把两个物体都加刚体就没这么多麻烦了?

其实是这样的,真实游戏里面,有太多的物体,而这些物体如果都有刚体那么对系统的开销是很大的,如果可以减少一半的开销是很不错的选择。

比如地面就可以不设置刚体,因为地面是永远不动的,把人物设置刚体就可以实现真实的物理碰撞效果了。

OnTriggerEnter与OnCollisionEnter详解相关推荐

  1. 从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)

    首先,Git已经并不只是GitHub,而是所有基于Git的平台,只要在你的电脑上面下载了Git,你就可以通过Git去管理"基于Git的平台"上的代码,常用的平台有GitHub.Gi ...

  2. JVM年轻代,老年代,永久代详解​​​​​​​

    秉承不重复造轮子的原则,查看印象笔记分享连接↓↓↓↓ 传送门:JVM年轻代,老年代,永久代详解 速读摘要 最近被问到了这个问题,解释的不是很清晰,有一些概念略微模糊,在此进行整理和记录,分享给大家.在 ...

  3. docker常用命令详解

    docker常用命令详解 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来. 根据自己的理解,总的来说分为以下几种: Doc ...

  4. 通俗易懂word2vec详解词嵌入-深度学习

    https://blog.csdn.net/just_so_so_fnc/article/details/103304995 skip-gram 原理没看完 https://blog.csdn.net ...

  5. 深度学习优化函数详解(5)-- Nesterov accelerated gradient (NAG) 优化算法

    深度学习优化函数详解系列目录 深度学习优化函数详解(0)– 线性回归问题 深度学习优化函数详解(1)– Gradient Descent 梯度下降法 深度学习优化函数详解(2)– SGD 随机梯度下降 ...

  6. CUDA之nvidia-smi命令详解---gpu

    nvidia-smi是用来查看GPU使用情况的.我常用这个命令判断哪几块GPU空闲,但是最近的GPU使用状态让我很困惑,于是把nvidia-smi命令显示的GPU使用表中各个内容的具体含义解释一下. ...

  7. Bert代码详解(一)重点详细

    这是bert的pytorch版本(与tensorflow一样的,这个更简单些,这个看懂了,tf也能看懂),地址:https://github.com/huggingface/pytorch-pretr ...

  8. CRF(条件随机场)与Viterbi(维特比)算法原理详解

    摘自:https://mp.weixin.qq.com/s/GXbFxlExDtjtQe-OPwfokA https://www.cnblogs.com/zhibei/p/9391014.html C ...

  9. pytorch nn.LSTM()参数详解

    输入数据格式: input(seq_len, batch, input_size) h0(num_layers * num_directions, batch, hidden_size) c0(num ...

最新文章

  1. Boost之正则表达式_[转]
  2. 研究生应锻炼的24种能力
  3. 防止过拟合的处理方法
  4. 秒杀多线程第九篇 经典线程同步总结 关键段 事件 互斥量 信号量
  5. 页面添加复制代码功能
  6. js进阶正则表达式14验证邮编(input的pattern属性)(正则表达式加起^始$)
  7. 转:MSSQL SERVER行转列 列转行
  8. EXTJS 5 开发环境搭建
  9. Linux kernel路由机制分析(下)
  10. idea 2019最新版无法打开报错问题,Error occurred during initialization of VM Initial heap size set to a larger va
  11. vscode插件Todo Tree配置
  12. SAP中税码、税率、税务科目的几个表及其中的勾稽关系
  13. 一文了解什么是嵌入式?
  14. 人脸表情识别 (1) 下载fer2013数据集和数据的处理
  15. ubuntu18.04 搭建ffmpeg踩坑
  16. OnDraw()和OnPaint()
  17. Ubuntu下包含2种远程桌面的方式:VINO-Server以及VNC Server
  18. MT6753芯片处理器资料介绍
  19. 2021年全球与中国金属切割机行业市场规模及发展前景分析
  20. 工业现场为什么标准信号是4~20mA

热门文章

  1. 拼多多怎样降低退款率?厦门宝讯网捷
  2. C程序设计 谭浩强 第九章
  3. linux jdk,hadoop,zookeeper, hive , zeppelin ,sqoop ,hbase,scala,spark,flume,kafka 安装终极脚本全家桶安装
  4. Open judge 1.8.3
  5. c语言大作业之自动寄存柜,关于自动寄存柜的问题求解
  6. matlab里怎么计算期望,§7.4.2 利用MATLAB计算随机变量的期望和方差.pdf
  7. python3保存的npy文件,python2无法读取的可能解决方案。
  8. 解决echarts在平移和缩放中国地图后,下钻到下一级具体省份地图时生成的地图不在容器中间,会跑到容器外面去。
  9. mybatis 9-23
  10. 【STM32笔记】低功耗模式配置及避坑汇总