• 正好看到了Roll a ball这个游戏,于是就温故一下碰撞检测和触发检测

1.前期准备

中间省去建造一些基础的物体的过程,最后呈现如下图

我们的主角就是中间的球体 其GameObject名为player,我们在其身上添上刚体组件(Rigidbody)使其可以进行物理移动

其次,我们再创建一个Move脚本用来控制球体的移动

private Rigidbody rgd;
public float speed = 5;void Start () {rgd = GetComponent<Rigidbody>(); //获取球体上的刚体组件
}void Update () {float h = Input.GetAxis("Horizontal");//水平方向 对应← →float v = Input.GetAxis("Vertical"); //垂直方向 对应↑ ↓ rgd.AddForce(new Vector3(h, 0, v) * speed);//给刚体施加一个力就可以运动了,添加一个方向即可
}

最后,我们还要给要给那些Cube附上标签以便我们访问它们

2.碰撞检测

  • 关于碰撞检测,我们主要用到以下三个函数(Unity自带)

OnCollisionEnter、OnCollisionExit、OnCollisionStay
其解释我们参考官网API

我们这边主要用到OnCollisionEnter
将以下代码加入到Move脚本中

private void OnCollisionEnter(Collision collision){if(collision.collider.tag=="pick up"){Destroy(collision.collider.gameObject);}}

这边很容易理解,collision.collider可以获取球体碰撞到的物体碰撞组件,只要其标签和我们之前设置的”pick up”一样即为我们所要碰撞检测的,当我们碰到后就消失物体

结果如下图:

不难看出,当我们球体撞到Cube上时虽然Cube消失了,但是还是有物理碰撞减速的影子,这就是碰撞机的缺点,无法使物理效果删除,所以为了更好的实现,我们接下来使用触发检测去完美解决

3.触发检测

  • 触发检测和碰撞检测类似有三个功能函数

OnTriggerEnter、OnTriggerExit、OnTriggerStay
其定义和Collider类似
我们在使用触发检测的时候,需要将需要被触发检测的物体上勾选上Is Trigger,这里就是Cube物体

我们此时可以先运行一下看一下触发器效果

可以很明显看到球体直接穿过Cube物体了,此时不会引起物理碰撞,然后我们再添加如下代码即可弥补之前的一点瑕疵

private void OnTriggerEnter(Collider other){if(other.tag=="pick up"){Destroy(other.gameObject);}}

我们将其运行可以得到如下图

是不是一点生硬的感觉都没有了!

4.总结

个人认为触发检测更多的是用来触发类似机关这类时使用,不需要物理碰撞,比如某个人走到一扇门前面此时就可以用触发检测来触发某些事件。而碰撞检测Emmmmm感觉实用性不是特别大吧…有什么其他问题欢迎评论和我讨论,新手初学,一起进步!

Unity学习笔记(二) 碰撞检测与触发检测相关推荐

  1. 【Unity学习笔记】b站Unity架构课Unity3D 商业化的网络游戏架构(高级/主程级别)

    [Unity学习笔记]b站Unity架构课Unity3D 商业化的网络游戏架构(高级/主程级别) 自己跟着学完了,写了不少代码,会放在CSDN代码库,因为老师并没有提供源码,录屏也不是完全连续,所以难 ...

  2. amazeui学习笔记二(进阶开发4)--JavaScript规范Rules

    amazeui学习笔记二(进阶开发4)--JavaScript规范Rules 一.总结 1.注释规范总原则: As short as possible(如无必要,勿增注释):尽量提高代码本身的清晰性. ...

  3. 【Unity学习笔记】[Unity中文课堂教程] C#中级编程代码

    [Unity学习笔记][Unity中文课堂教程] C#中级编程代码 最近想补一补C#基础,Unity官方的C#中级编程教程质量很高,于是开个帖子把跟着敲+记录了部分价讲解和我自己的理解的代码存在这 原 ...

  4. [Unity学习笔记:FPS游戏制作(3)]子弹拖尾,碰撞与枪口火焰效果

    往期博客[Unity学习笔记:FPS游戏制作(2)] 发射子弹----(2021.6.20学习笔记) 文章目录 一,实现思路 二,粒子效果的实现 (1)子弹拖尾特效的实现 (2)枪口火焰特效的实现 ( ...

  5. [转载]dorado学习笔记(二)

    原文地址:dorado学习笔记(二)作者:傻掛 ·isFirst, isLast在什么情况下使用?在遍历dataset的时候会用到 ·dorado执行的顺序,首先由jsp发送请求,调用相关的ViewM ...

  6. Ethernet/IP 学习笔记二

    Ethernet/IP 学习笔记二 原文链接:http://wiki.mbalib.com/wiki/Ethernet/IP 1.通信模式 不同于源/目的通信模式,EtherNet/IP 采用生产/消 ...

  7. Java学习笔记二:数据类型

    Java学习笔记二:数据类型 1. 整型:没有小数部分,允许为负数,Java整型分4种:int short long byte 1.1 Int最为常用,一个Int类型变量在内存中占用4个字节,取值范围 ...

  8. pythonsze_python学习笔记二 数据类型(基础篇)

    Python基础 对于Python,一切事物都是对象,对象基于类创建 不同类型的类可以创造出字符串,数字,列表这样的对象,比如"koka".24.['北京', '上海', '深圳' ...

  9. 二维码学习笔记(二) | 数据分析与数据编码

    唠唠闲话 二维码笔记系列(原文地址): 『二维码学习笔记(一) | 二维码概述』 『二维码学习笔记(二) | 数据分析与数据编码』 『二维码学习笔记(三) | 纠错编码』 『二维码学习笔记(四) | ...

最新文章

  1. 2021软科世界大学学术排名发布!哈佛蝉联全球第一,清华位居国内榜首
  2. ORACLE12C_ADG删除pdb
  3. 机房收费--修改密码
  4. JBoss模块很糟糕,无法在JBoss 7下使用自定义Resteasy / JAX-RS
  5. 《黑客秘笈——渗透测试实用指南》—第2章2.3节 外部或内部的主动式信息收集...
  6. notepad python设置_NotePad++上配置Python
  7. 「区块链+人工智能」:来自谷歌、IBM、百度的真实案例
  8. 使用javap分析Java的字符串操作 1
  9. 东北大学22春学期《概率论X》在线平时作业123
  10. java调用WebService接口工具
  11. 增强型植被指数——EVI
  12. DIV+CSS系统学习:转载
  13. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true
  14. Java程序语言(基础篇)第2章 基本程序设计 编程练习题解答
  15. 交叉编译linux内核实例(最详细)总结
  16. 避雷指南:软件测试最容易陷的28个误区
  17. txt文本文件数据转ArcGIS中的tif文件
  18. SitePoint播客#34:对斜线表示抱歉
  19. 2006年重大病毒***大阅兵
  20. 第一性原理态密度计算的基本原理和应用场景

热门文章

  1. datatable隐藏列设置及获取隐藏列的值
  2. 飞腾arm服务器下的银河麒麟V10 yum 安装docker
  3. Unity的GPU Instancing
  4. 如何往云服务器上装虚拟机,如何在虚拟机安装linux
  5. python包编译过程中出现: /usr/local/cuda-9.0/nvcc: No such file or directory问题的简单解决办法
  6. 表情符号Emoji的正则表达式
  7. esp32-cam摄像头+远程遥控小车
  8. Presto 在美图的实践
  9. uni-app开发小程序以及项目部署流程
  10. C语言实现易语言变量框,【VC】发一个自己用c语言写的仿易语言的文本_取文本左边函数把...