Unity --- 物理引擎 --- 触发器 与 碰撞器详解

这篇具有很好参考价值的文章主要介绍了Unity --- 物理引擎 --- 触发器 与 碰撞器详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

碰撞器补充讲解

Unity --- 物理引擎 --- 触发器 与 碰撞器详解

对第一个条件进行补充 --- 不仅要两者都具有碰撞组件,同时还需要两者的碰撞组件中都没有勾选 Is Trigger属性

 1.上一篇文章中说了那么多,其实也可以总结为两个碰撞条件 --- a.两个游戏物体都具有碰撞器组件 ,如果没有的话,连碰撞检测都不会发生,也就没有所谓的碰不碰撞一说了

b.运动的物体具有刚体组件 --- 在有刚体组件的前提下,物体只有处于运动状态时才具有Unity --- 物理引擎 --- 触发器 与 碰撞器详解

1.第一个阶段会在两个物体接触的第一帧执行 --- 只执行一次

2.第二个阶段会在两个物体保持接触时每帧执行 --- 每帧执行

3.第三个阶段则是在两个物体分离的那一帧执行 --- 只执行一次

4.collision(名词.碰撞) --- 上面那个Collision是一个类 --- 其实就是碰撞器类Unity --- 物理引擎 --- 触发器 与 碰撞器详解

1.碰撞阶段的三个方法都有一个参数 --- Collision other --- 这个参数的类型是碰撞器类 --- 当挂载该脚本的游戏物体a与其它具有碰撞器组件的游戏物体b发生碰撞时, 游戏物体b的碰撞器组件对象就会被传给三个方法中的引用参数 Collision other.

(注意!!! 碰撞器组件对象是被传给了Collision类内部的一个引用 --- 该引用的类型是Collider,引用名就是 collider  --- 如果说想访问碰撞器组件对象的话得通过 对应类型的参数名 + 点操作符 + 类中的引用的引用名)

2.注意!只有满足了两个碰撞条件(a.都具有碰撞器组件 b.运动的物体上具有刚体组件  --- 不处于运动状态的话则刚体组件处于休眠状态)之后才能够开始执行碰撞的三个阶段对应的方法 --- 对了写有方法的脚本也得挂载到游戏物体上并启动才行


触发器讲解

碰撞器组件中勾选了Is Trigger属性的游戏物体无论是撞别人还是被别人撞都不会产生碰撞效果而是直接穿过去

 1.碰撞器组件中的Is trigger属性被勾选后就转变为了 --- 触发器

触发器与碰撞器的区别就是 --- 触发器不会产生碰撞效果Unity --- 物理引擎 --- 触发器 与 碰撞器详解

1.注意!只需要带有刚体组件即可,不需要处于运动状态Unity --- 物理引擎 --- 触发器 与 碰撞器详解

1.满足触发条件之后就会开始执行触发三阶段所对应的方法 

注意碰撞三阶段与触发三阶段之间的 --- a.方法区别 b.方法的参数的类型区别(一个是Collision类名词碰撞,类中有一个Collider类型的引用  ; 另一个是Collider类 名词碰撞器,它就是碰撞器类型)


Collision类 与 Collider类

1.Collision类中包含一个引用,该引用的类型是Collider,引用名是collider

2.Collider类就是碰撞器类,游戏物体挂载的碰撞器组件对象类型就是Collider

3.Collision类还包含一个很重要的引用 --- contacts

Unity --- 物理引擎 --- 触发器 与 碰撞器详解

1.contact(v.接触)

2.这个引用的类型是 ContactPoint[ ] --- 也就是说这个引用是一个数组引用,它指向的是一个存放两个物体发生碰撞时的接触点的数组

3..通过这个引用 + 索引,我们能够访问到碰撞点 

4.碰撞点类型 --- ContactPoint中有两个比较重要的属性 --- point  /  normal

两者的类型都是Vector3类,不过point表示的是接触点的坐标,而normal表示的是接触面的法向量

5.一个游戏物体可以拥有多个碰撞器组件以此来实现多重碰撞检测,一般来说都是一个碰撞器用来作为触发器,一个碰撞器用来模拟物理效果的(说白了就是一个有Is Trigger ,一个没有Is Trigger)Unity --- 物理引擎 --- 触发器 与 碰撞器详解

1.如果物体移动速度过快的话,碰撞检测将失效,此时需要我们更换检测方式  --- 使用射线检测法来进行替代

2.射线检测方法被封装在了Physics类中 --- 方法名:Raycast() -- 为静态方法 --- 这个方法的一个重载方法的参数中有一个比较特别的参数  ---- 参数的类型是 out RaycastHit --- 这个参数被out 修饰,是一个输出参数,也就是说在方法调用的时候会将一些计算结果赋值给这个参数 --- 这个参数的使用方法是:

a.在调用方法前建立一个无out的参数 -- 如上图,然后将其传参给函数,函数调用过程中将一些结果赋值给这个参数,这个参数再传给外面的无out同类型的传参源头引用

b.RaycastHit类对象是用来记录射线检测到的各种数据的,如射线检测到的点的坐标,射线检测到的面的法向量等等 --- 具体可以查看该类的内部

3.该方法除了在调用过程中传参给输出(out)参数外,在方法调用结束的时候也会返回一个bool值 --- bool值为true则意味着射线检测到了物体,反之就是没有检测到物体

4.通过射线检测来进行碰撞判定,说白了就是在物体运动之前就计算和设计好了是否会碰撞,如果没碰撞发生什么,如果碰撞了又发生什么,以及物体怎么运动 --- 通过这种方式能够规避掉边运动边检测(如逐帧检测)可能带来的失效问题文章来源地址https://www.toymoban.com/news/detail-467679.html

到了这里,关于Unity --- 物理引擎 --- 触发器 与 碰撞器详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity中触发器(trigger)个人见解

    在 Unity 3D 中,检测碰撞发生的方式有两种,一种是利用碰撞体,另一种则是利用触发器(Trigger)。 触发器(Trigger)是用来触发事件的 例如:在角色扮演游戏里,玩家走到一个地方会发生出现 Boss 的事件,就可以用触发器来实现。或者构建传送门时,需要触发器完成传送。 触

    2024年02月03日
    浏览(31)
  • MySQL高级篇复盘笔记(一)【存储引擎、索引、SQL优化、视图、触发器、MySQL管理】

    ❤ 作者主页:欢迎来到我的技术博客😎 ❀ 个人介绍:大家好,本人热衷于 Java后端开发 ,欢迎来交流学习哦!( ̄▽ ̄)~* 🍊 如果文章对您有帮助,记得 关注 、 点赞 、 收藏 、 评论 ⭐️⭐️⭐️ 📣 您的支持将是我创作的动力,让我们一起加油进步吧!!!🎉🎉 连接层

    2024年02月06日
    浏览(51)
  • 【Unity】Trigger触发器失效没反应的解决办法

    今天遇到了一个问题,创建的角色进入传送门的时候无法传送。 看了所有的代码,确定没有问题之后,把目标瞄准到了Trigger上,在触发中添加了输出之后发现,触发器确实没有触发 众所周知,触发器触发需要两者都有触发器,其中一者勾选Is Trigger,其中一者有刚体就可以了

    2024年02月13日
    浏览(41)
  • 【MySQL进阶】MySQL触发器详解

    序号 系列文章 7 【MySQL基础】运算符及相关函数详解 8 【MySQL基础】MySQL多表操作详解 9 【MySQL进阶】MySQL事务详解 10 【MySQL进阶】MySQL视图详解 大家好,我是小杨!前面我已经为大家介绍了MySQL中的进阶知识-视图,那么今天我们就给大家讲解MySQL中的触发器这部分的相关内容,

    2024年02月03日
    浏览(35)
  • D触发器 (D-FF)详解

    ⭐本专栏针对FPGA进行入门学习,从数电中常见的逻辑代数讲起,结合Verilog HDL语言学习与仿真,主要对组合逻辑电路与时序逻辑电路进行分析与设计,对状态机FSM进行剖析与建模。 🔥文章和代码已归档至【Github仓库:hardware-tutorial】,需要的朋友们自取。或者公众号【AISha

    2024年02月03日
    浏览(28)
  • Unity3D教程:触发器实现简单的场景跳转

    首先,需确保有一个想要跳转的目标场景。在本案例中,目标场景是ending。 第一步:创建一个碰撞体,放置在需要的触发场景跳转的位置。 第二步:删除多余的脚本,并且新建自己的脚本: 第三

    2024年02月12日
    浏览(38)
  • MySQL-SQL存储函数以及触发器详解

    ♥️ 作者:小刘在C站 ♥️ 个人主页:  小刘主页  ♥️ 努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️ 学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏: 云计算技术 ♥️小刘私信可以随便问,只要会绝不吝啬,感谢CSD

    2024年02月11日
    浏览(33)
  • MySQL-SQL存储过程/触发器详解(下)

    ♥️ 作者:小刘在C站 ♥️ 个人主页:  小刘主页  ♥️ 努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️ 学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏: 云计算技术 ♥️小刘私信可以随便问,只要会绝不吝啬,感谢CSD

    2024年02月11日
    浏览(38)
  • MySQL-SQL存储过程/触发器详解(上)

    ♥️ 作者:小刘在C站 ♥️ 个人主页:  小刘主页  ♥️ 努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️ 学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏: 云计算技术 ♥️小刘私信可以随便问,只要会绝不吝啬,感谢CSD

    2024年02月09日
    浏览(33)
  • 【100个 Unity实用技能】☀️ | 关于触发器互相检测的必要前提条件配置

    老规矩,先介绍一下 Unity 的科普小知识: Unity 是 实时3D互动内容创作和运营平台 。 包括 游戏开发 、 美术 、 建筑 、 汽车设计 、 影视 在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和

    2023年04月09日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包