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

news2025/6/10 9:35:33

碰撞器补充讲解

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

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

b.运动的物体具有刚体组件 --- 在有刚体组件的前提下,物体只有处于运动状态时才具有

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

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

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

4.collision(名词.碰撞) --- 上面那个Collision是一个类 --- 其实就是碰撞器类

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

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

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


触发器讲解

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

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

触发器与碰撞器的区别就是 --- 触发器不会产生碰撞效果

1.注意!只需要带有刚体组件即可,不需要处于运动状态

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

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


Collision类 与 Collider类

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

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

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

1.contact(v.接触)

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

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

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

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

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

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

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/412366.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】哈希表详解以及代码实现

目录 1.来源: 2.哈希函数 1.哈希函数的设计规则 2.哈希函数的设计思路 3.哈希碰撞 4.解决哈希碰撞的方案 5.负载因子 3.基于开散列方案的HashMap实现 1.HashMap类中的属性 2.哈希函数 3.判断当前哈希表中是否含有指定的key值 4.判断当前哈希表中是否包含…

【尊享版】聊聊我最近比较重要的一些认知升级

超友们,早上好~ 今天我为你带来的分享是《聊聊我最近比较重要的一些认知升级》,主要分为三个部分: 一、【10 点战略认知升级】 二、【10 点学习认知升级】 三、【5 点提效认知升级】 🎈一、【10 点战略认知升级】 …

基于Java+SpringBoot+vue的在线动漫信息平台设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】

博主介绍:专注于Java技术领域和毕业项目实战 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 Java项目精品实战案例(300套) 目录 一、效果演示 二、…

一文吃透泛型

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址 如果访问不了Github&#xff0c…

CVE-2017-10271 WebLogic XMLDecoder反序列化漏洞

靶场环境:vulnstack靶机-委派靶场 漏洞描述 CVE-2017-10271漏洞产生的原因大致是Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任…

【RabbitMQ】Spring整合RabbitMQ、Spring实现RabbitMQ五大工作模式(万字长文)

目录 一、准备 1、创建maven项目​编辑 2、引入依赖 3、创建配置文件 1.RabbitMQ配置文件 2.生产者项目配置文件 3.消费者项目配置文件 二、生产者xml中文件创建队列 三、生产者xml文件中创建交换机以及绑定队列 1、创建交换机 2、绑定队列 四、消费者xml文件中创建…

第五十八章 线段树(一)

第五十八章 线段树(一)一、树状数组的缺陷二、线段树的作用三、线段树的基本构成1、节点定义2、线段树的结构四、线段树的重要函数1、构造线段树——bulid函数2、查询区间——query函数3、单点修改——modify函数五、例题一、树状数组的缺陷 在前面两个…

flink 的 State

目录 一、前言 二、什么是State 2.1:什么时候需要历史数据 2.2:为什么要容错,以及checkpoint如何进行容错 2.3:state basckend 又是什么 三、有哪些常见的是 State 四、 State的使用 五、State backend 5.1 MemoryState…

进程,线程,调度和调度算法基本知识

进程 我们编写的代码只是一个存储在硬盘的静态文件,通过编译后就会生成二进制可执行文件,当我们运行这个可执行文件后,它会被装载到内存中,接着 CPU 会执行程序中的每一条指令,那么这个运行中的程序,就被称…

【C++】内联函数理解

内联函数 内联函数的使用是对于C语言中宏函数的一种改进,他继承了宏的优点并避免了宏的缺点。 宏的优点:a. 代码复用性高 b. 宏函数减少栈帧建立,提高效率 宏的缺点:a. 可读性差 b. 没有类型安全检查 c. 不方便调试 C基本不再建议…

银行数字化转型导师坚鹏:金融数据治理、数据安全政策解读

金融数据治理、数据安全政策解读及大数据应用课程背景: 很多银行存在以下问题: 不知道如何准确理解金融数据治理及数据安全相关政策 不清楚金融数据治理及数据安全相关政策对银行有什么影响? 不清楚如何有效应用金融数据治理及数据安全相关…

软考软件设计师 下午试题二笔记

E-R图基本图形元素 实体 一个实体的存在要以另一个实体存在为前提,这个就是弱实体,比如家属和职工,家属的存在就是依赖于职工 属性 属性带下划线的是主键 联系 三个实体之间的联系 试题二问题一例题 问题二 将er图转成关系模式就是问题二答…

Cell Discovery:人类特异基因促进大脑皮层折叠新机制

在人类进化过程中,新皮层的扩张与智力的提高和认知功能的改善密切相关。这种扩张的一个关键方面是大脑皮层沟回的形成,它使扩张的皮质表面积能够适应有限的颅骨空间。这些进化特征主要依赖于多种神经干细胞和祖细胞亚型及其神经源性分裂产生的更多数量的…

《计算机网络-自顶向下》05. 网络层-控制平面

文章目录路由控制方式每路由控制逻辑集中式控制路由选择算法LS —— 链路状态路由选择算法DV —— 距离向量路由选择算法LS 和 DV 算法的比较自治系统内部路由协议RIPOSPF自治系统外部路由协议:BGP通告 BGP 路由信息选择最好的路由相关术语热土豆选择路由选择算法&a…

Swagger教程

Swagger 目标 Swagger简介【了解】 Springboot整合swagger【掌握】 Swagger 常用注解【掌握】 一、Swagger简介 ​ Swagger 是一系列 RESTful API 的工具,通过 Swagger 可以获得项目的⼀种交互式文档,客户端 SDK 的自 动生成等功能。 ​ Swagger …

TryHackMe-Year of the Owl(Windows渗透测试)

Year of the Owl 当迷宫在你面前,你迷失了方向时,有时跳墙思考是前进的方向。 端口扫描 循例 nmap SMB枚举 smbmap enum4linux也什么都没有 Web枚举 80端口 gobuster扫到一堆403,并没有什么有用的信息 443端口与80端口一致 47001端口依…

【SQL】公网远程访问局域网SQL Server数据库【无公网IP内网穿透】

目录 1.前言 2.本地安装和设置SQL Server 2.1 SQL Server下载 2.2 SQL Server本地连接测试 2.3 Cpolar内网穿透的下载和安装 2.3 Cpolar内网穿透的注册 3.1 Cpolar云端设置 3.2 Cpolar本地设置 4.公网访问测试 5.结语 转发自CSDN远程穿透的文章:[无需公网IP&am…

详解以太坊

以太坊原理 以太坊通过建立终极的抽象的基础层-内置有图灵完备编程语言的区块链-使得任何人都能够创建合约和去中心化应用,并在其中设立他们自由定义的所有权规则、交易方式和状态转换函数。 图灵完备:能够运行非常复杂的运算,最简单的理解…

基于共享储能电站的工业用户日前优化经济调度

目录 1 主要内容 共享电站示意图 目标函数 2 部分程序 3 程序结果 4 程序链接 1 主要内容 该程序方法复现《基于共享储能电站的工业用户日前优化经济调度》算例2和算例3,根据共享储能电站的商业运营模式,将共享储能电站应用到工业用户经济优化调度…

〖Python网络爬虫实战⑨〗- 正则表达式基本原理

订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付…