Unity自学之旅03
Unity自学之旅03
- Unity自学之旅03
- 📝 碰撞体 Collider 基础
- 定义与作用
- 常见类型
- OnCollisionEnter 事件
- 碰撞触发器
- 🤗 总结归纳
Unity自学之旅03
📝 碰撞体 Collider 基础
定义与作用
- 定义:碰撞体是游戏中用于检测物体之间碰撞的组件或区域。它通常是一个虚拟的形状,附加在游戏对象上,用于定义该对象的碰撞边界和物理交互范围。
- 作用:主要用于实现游戏中的物理交互效果,比如当两个游戏对象的碰撞体发生重叠时,游戏引擎可以检测到这种碰撞事件,并根据设定执行相应的操作,如触发伤害计算、推动物体、触发机关、播放碰撞音效等,使游戏中的物体之间能够产生真实或符合游戏逻辑的交互。
常见类型
- 盒状碰撞体(Box Collider):形状为长方体,适用于具有规则矩形外形的物体,如建筑物、箱子等。在 2D 游戏中,它是一个矩形区域,在 3D 游戏中则是一个长方体空间。
- 球形碰撞体(Sphere Collider):呈球形,常用于模拟具有圆形外形的物体的碰撞,如球类、角色的头部等。在计算碰撞时,以球心和半径来确定碰撞范围。
- 胶囊碰撞体(Capsule Collider):类似胶囊形状,一般用于角色的身体碰撞检测,它可以很好地适应角色的移动和旋转,能更自然地与其他物体发生碰撞交互。
- 多边形碰撞体(Polygon Collider):可以根据物体的实际外形自定义碰撞边界,由多个顶点组成多边形。对于形状不规则的物体,如树叶、不规则的石头等,使用多边形碰撞体可以更精确地定义其碰撞区域。
- 复合碰撞体(Compound Collider):由多个不同形状的碰撞体组合而成,用于构建复杂形状物体的碰撞模型。例如,一辆汽车可能由多个盒状碰撞体和球形碰撞体组合成复合碰撞体,来准确模拟汽车不同部位的碰撞情况。
OnCollisionEnter 事件
当两个带有碰撞体的GameObject
碰撞时,两个对象都会注册一个OnCollisionEnter
事件,其中包含对撞到对象的引用。
例子:为Health_Pickup添加碰撞处理事件,达到player碰撞health_pickup时拾取效果。
public class ItemBehavior : MonoBehaviour
{// 发生碰撞时被调用void OnCollisionEnter(Collision collision){if(collision.gameObject.name == "Player"){// 销毁当前物体Destroy(this.transform.gameObject);Debug.Log("碰撞,销毁");}}
}
碰撞触发器
-
概念
碰撞触发器是一种特殊的碰撞体,与常规碰撞体不同,它主要用于检测物体之间的重叠情况,而不一定会产生物理上的碰撞效果,如阻止物体穿透等。当两个带有碰撞触发器的游戏对象重叠时,会触发特定的事件,开发人员可以在脚本中定义这些事件的响应逻辑,从而实现各种游戏功能,比如触发剧情、获取道具、进入特定区域等。
-
常见用法
- 触发剧情或任务:在游戏场景中设置特定的区域,当玩家角色进入该区域时,通过碰撞触发器触发一段剧情动画或开启一个新任务。
- 收集道具:为游戏中的道具添加碰撞触发器,当玩家角色与道具重叠时,触发收集逻辑,将道具添加到玩家的物品栏中。
- 场景切换:在不同场景的交界处设置碰撞触发器,当玩家接近或进入该触发器区域时,触发场景切换的逻辑,将玩家传送到新的场景。
-
与碰撞体的区别
- 物理效果:碰撞体主要用于模拟真实世界中的物理碰撞,会阻止物体相互穿透,产生碰撞反弹等物理效果。而碰撞触发器侧重于检测物体之间的重叠状态,不会产生直接的物理碰撞效果,物体可以相互穿透。
- 事件触发:碰撞体通过
OnCollisionEnter
等方法来处理碰撞事件,通常在两个物体发生物理碰撞时触发。碰撞触发器则通过OnTriggerEnter
等方法来触发事件,当两个物体的触发区域重叠时就会触发。
如何使用Unity中的碰撞触发器,需要为其添加一个Collider组件(常用的有胶囊碰撞体…),然后触发器的话,需要勾选Is Trigger 属性,将其设置为触发器。设置为触发器之后,事件监听变为 OnTriggerEnter
OnTriggerExit
OnTriggerExit
.
为了练习触发器,完成一个案例,设置Enemy敌人,当玩家player进入到该区域时,生成警报日志提示!
首先,创建一个胶囊体,为其添加红色材质,并放置于世界中心,然后碰撞体勾选Is Tirgger
.
public class EnemyBehavior : MonoBehaviour
{void OnTriggerEnter(Collider other){if(other.name == "Player"){Debug.Log("玩家进入警戒范围");} }void OnTriggerExit(Collider other){if (other.name == "Player"){Debug.Log("玩家离开警戒范围");}}
}
🤗 总结归纳
Collider组件通过RigidBody组件与其他Collider组件(或对象)交互
- 如果Collider组件不是触发器,则充当具有实体的对象
- 如果Collider组件是触发器,则可以被穿过。
- 通过勾选 “Is Trigger” 属性,可从物理碰撞模式切换到触发模式,触发
OnTriggerEnter
、OnTriggerStay
和OnTriggerExit
等事件,方便实现非物理交互逻辑。
相关文章:

Unity自学之旅03
Unity自学之旅03 Unity自学之旅03📝 碰撞体 Collider 基础定义与作用常见类型OnCollisionEnter 事件碰撞触发器 🤗 总结归纳 Unity自学之旅03 📝 碰撞体 Collider 基础 定义与作用 定义:碰撞体是游戏中用于检测物体之间碰撞的组…...
pip 相关
一劳永逸法(pip怎么样都用不了也更新不了): 重下python(卸载旧版本):请输入访问密码 密码:7598 各版本python都有,下3.10.10 python路径建立,pip无法访问方式: 访问pip要…...
vue request 发送formdata
在Vue中,你可以使用axios库来发送包含FormData的请求。以下是一个简单的例子: 首先,确保你已经安装了axios: npm install axios然后,你可以使用axios发送FormData,例如: import axios from a…...

Android RTMP直播练习实践
前言:本文只是练习,本文只是练习,本文只是练习! 直播的核心就是推流和拉流,我们就以RTMP的协议来实现下推流和拉流,其他的协议等我学习后再来补充 1.推流 1.1搭建流媒体服务器,具体搭建方法请参…...

ITIL认证工具商-ManageEngine Servicedesk Plus
ServiceDesk Plus是Zoho Corporation旗下企业IT管理部门ManageEngine提供的统一服务管理解决方案。凭借其无限的可扩展性、情境化的IT和业务集成以及一键式工作流程自动化功能,IT领导者可以使用ServiceDesk Plus有效执行和控制跨不同业务部门和IT功能的复杂工作流程…...
https 的 CA证书和电子签名
https 的攻击者可能使用伪造的一对公私钥与客户端交互, 那么如何确保确实是该服务器的公钥呢? 这就诞生了CA颁发机构 CA颁发机构 服务器和客户端都信任指定的CA颁发机构 服务器上传服务器公钥, CA颁发机构做了什么 服务器公钥哈希, 记为 Hash使用 CA 私钥为 Hash 进行 CA 签…...
频繁刷新网页会对服务器造成哪些影响?
当用户在进行浏览网页的过程中频繁刷新页面时,浏览器会向服务器发送请求,服务器会对该请求进行处理并返回到相应的页面内容中,所以频繁刷新网页会对服务器造成影响,有可能会出现以下问题: 用户每次刷新网页都会向服务器…...

贪心算法(题1)区间选点
输出 2 #include <iostream> #include<algorithm>using namespace std;const int N 100010 ;int n; struct Range {int l,r;bool operator <(const Range &W)const{return r<W.r;} }range[N];int main() {scanf("%d",&n);for(int i0;i&l…...
JavaWeb开发学习笔记--MySQL
MySQL-DQL 基本语法: select 字段列表 from 表名列表 where 条件列表 group by 分组字段列表 having 分组后条件列表 order by 排序字段列表 limit 分页参数 基本查询 关键字:SELECT 查询多个字段:select 字…...

抖音小程序一键获取手机号
前端代码组件 <button v-if"!isFromOrderList"class"get-phone-btn" open-type"getPhoneNumber"getphonenumber"onGetPhoneNumber">一键获取</button>// 获取手机号回调onGetPhoneNumber(e) {var that this tt.login({f…...

iconfont等图标托管网站上传svg显示未轮廓化解决办法
打开即时设计 即时设计 - 可实时协作的专业 UI 设计工具 导入图标后拖入画板里面,右键选择轮廓化 将图标导出...

2008-2020年各省城镇登记失业率数据
2008-2020年各省城镇登记失业率数据 1、时间:2008-2020年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区名称、年份、城镇登记失业率 4、范围:31省 5、指标说明:城镇登记失业率是指在一定时期内&…...

Linux——信号量和(环形队列消费者模型)
Linux——线程条件变量(同步)-CSDN博客 文章目录 目录 文章目录 前言 一、信号量是什么? 二、信号量 1、主要类型 2、操作 3、应用场景 三、信号量函数 1、sem_init 函数 2、sem_wait 函数 3、sem_post 函数 4、sem_destroy 函数 …...
【JOIN】关键字在MySql中的详细使用
目录 INNER JOIN(内连接) LEFT JOIN(左连接) RIGHT JOIN(右连接) FULL JOIN(全连接) 示例图形化解释JOIN的不同类型 INNER JOIN: LEFT JOIN: RIGHT J…...

渗透测试--攻击常见的Web应用
本文章咱主要讨论,常见Web应用的攻击手法,其中并不完全,因为Web应用是在太多无法囊括全部,但其中的手法思想却值得我们借鉴,所以俺在此做了记录,希望对大家有帮助!主要有以下内容: 1…...

window系统annaconda中同时安装paddle和pytorch环境
一、下载nvidia驱动 Download The Official NVIDIA Drivers | NVIDIA 查看GPU信息 nvidia-smi 二、安装cuda CUDA Toolkit 11.8 Downloads | NVIDIA Developer 按以下步骤下载cuda安装包,我使用的cuda11.8 下载后双击一路下一步安装即可。 查看cuda版本 nvcc …...

python-leetcode-简化路径
71. 简化路径 - 力扣(LeetCode) class Solution:def simplifyPath(self, path: str) -> str:# 使用栈来处理路径stack []# 分割路径,以 / 为分隔符parts path.split(/)for part in parts:if part or part .:# 空字符串或 .࿰…...
浅谈 PID 控制算法
PID 控制算法概念 在我们的生活中可能大家都没有听说过 PID 控制算法,但它可以说是无处不在,小到空调的温度控制、无人机的精准悬停、机器人运作系统,大到飞机和火箭的飞行姿态控制都有 PID 的身影。 PID 控制算法,即比例 - 积分…...

ailx10的专栏电子书(2022版)
最近整理了一下自己的知乎专栏,基于myBase和html help workshop做了一本电子书,一共20个章节,接近280M,19块9,有兴趣的同学私信我,记录了从我上学到工作这些年来的心得体会,以及学习历程&#x…...

WPS按双字段拆分工作表到独立工作簿-Excel易用宝
我们老板真是事多,他说要把这个工作表以月份和支付方式的维度,以这两个字段进行拆分工作表,而且拆分出来的表格要保存一个新的工作簿。 啥事都交给我,他还以为我有三头六臂呢,还好我有易用宝,可以轻松拆分…...
PostgreSQL 的扩展pageinspect
PostgreSQL 的扩展pageinspect pageinspect 是 PostgreSQL 提供的一个强大的底层扩展,允许数据库管理员和开发者直接检查数据库页面的内部结构。这个扩展对于数据库调试、性能优化和深入学习 PostgreSQL 存储机制非常有价值。 一、扩展概述 功能:提供…...
Go 语言实现高性能 EventBus 事件总线系统(含网络通信、微服务、并发异步实战)
前言 在现代微服务与事件驱动架构(EDA)中,事件总线(EventBus) 是实现模块解耦与系统异步处理的关键机制。 本文将以 Go 语言为基础,从零构建一个高性能、可扩展的事件总线系统,深入讲解&#…...
鸿蒙图片缓存(一)
移动端开发过程中图片缓存功能是必备,iOS和安卓都有相关工具库,鸿蒙系统组件本身也自带缓存功能,但是遇到复杂得逻辑功能还是需要封装图片缓存工具。 系统组件Image 1. Image的缓存策略 Image模块提供了三级Cache机制,解码后内…...
Ansible自动化运维全解析:从设计哲学到实战演进
一、Ansible的设计哲学:简单即正义 在DevOps工具链中,Ansible以其"无代理架构(Agentless)"设计独树一帜。这个用Python编写的自动化引擎,通过SSH协议与目标主机通信,彻底摒弃了传统配置管理工具…...

Shell 命令及运行原理 + 权限的概念(7)
文章目录 Shell 命令以及运行原理(4-1.22.08)Linux权限的概念1. 什么是权限2. 认识人(普通用户,root用户)以及两种用户的切换认识普通用户和root用户两种用户之间的切换指令提权 3. 文件的属性解析 权限属性指令ll显示…...

通道注意力
一、 什么是注意力 其中注意力机制是一种让模型学会「选择性关注重要信息」的特征提取器,就像人类视觉会自动忽略背景,聚焦于图片中的主体(如猫、汽车)。 transformer中的叫做自注意力机制,他是一种自己学习自己的机制…...
数据库密码加密
数据库密码加密 添加jar包构建工具类具体使用优缺点 添加jar包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId> </dependency>构建工具类 public class PasswordUtil …...

云计算 Linux Rocky day03(which、快捷键、mount、家目录、ls、alias、mkdir、rm、mv、cp、grep)
云计算 Linux Rocky day03(which、快捷键、mount、家目录、ls、alias、mkdir、rm、mv、cp、grep) 目录 云计算 Linux Rocky day03(which、快捷键、mount、家目录、ls、alias、mkdir、rm、mv、cp、grep)1.which找到命令所对应的程序…...
Podman 和 Docker
Podman 和 Docker 都是容器化工具,用于创建、运行和管理容器。它们有很多相似之处,但也存在关键区别。下面从多个维度对比它们,并给出适用场景建议。 1. 核心区别 特性DockerPodman守护进程(Daemon)必须运行 dockerd …...
如何自动部署GitLab项目
如何自动部署 原理 GitLab有预制的钩子, 在代码提交/合并等事件中,会自动调用WebHoos, 即向该URL发送POST请求在布署服务器上监听该POST, 验证通过后执行相关的布置Shell脚本, 即可完成自动布署 配置环境 安装Python和Pip 2.如果需要, 安装python的requests模块和argparse模…...