当前位置: 首页 > news >正文

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("碰撞,销毁");}}
}

在这里插入图片描述

碰撞触发器

  1. 概念

    碰撞触发器是一种特殊的碰撞体,与常规碰撞体不同,它主要用于检测物体之间的重叠情况,而不一定会产生物理上的碰撞效果,如阻止物体穿透等。当两个带有碰撞触发器的游戏对象重叠时,会触发特定的事件,开发人员可以在脚本中定义这些事件的响应逻辑,从而实现各种游戏功能,比如触发剧情、获取道具、进入特定区域等。

  2. 常见用法

    • 触发剧情或任务:在游戏场景中设置特定的区域,当玩家角色进入该区域时,通过碰撞触发器触发一段剧情动画或开启一个新任务。
    • 收集道具:为游戏中的道具添加碰撞触发器,当玩家角色与道具重叠时,触发收集逻辑,将道具添加到玩家的物品栏中。
    • 场景切换:在不同场景的交界处设置碰撞触发器,当玩家接近或进入该触发器区域时,触发场景切换的逻辑,将玩家传送到新的场景。
  3. 与碰撞体的区别

    • 物理效果:碰撞体主要用于模拟真实世界中的物理碰撞,会阻止物体相互穿透,产生碰撞反弹等物理效果。而碰撞触发器侧重于检测物体之间的重叠状态,不会产生直接的物理碰撞效果,物体可以相互穿透。
    • 事件触发:碰撞体通过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” 属性,可从物理碰撞模式切换到触发模式,触发OnTriggerEnterOnTriggerStayOnTriggerExit等事件,方便实现非物理交互逻辑。

相关文章:

Unity自学之旅03

Unity自学之旅03 Unity自学之旅03📝 碰撞体 Collider 基础定义与作用常见类型OnCollisionEnter 事件碰撞触发器 🤗 总结归纳 Unity自学之旅03 📝 碰撞体 Collider 基础 定义与作用 定义:碰撞体是游戏中用于检测物体之间碰撞的组…...

STranslate 中文绿色版即时翻译/ OCR 工具 v1.3.1.120

STranslate 是一款功能强大且用户友好的翻译工具,它支持多种语言的即时翻译,提供丰富的翻译功能和便捷的使用体验。STranslate 特别适合需要频繁进行多语言交流的个人用户、商务人士和翻译工作者。 软件功能 1. 即时翻译: 文本翻译&#xff…...

树的存储(c++)

树结构相对线性结构来说就⽐较复杂。存储时,既要保存值域,也要保存结点与结点之间的关系。实际中树有很多种存储⽅式:双亲表⽰法,孩⼦表⽰法、孩⼦双亲表⽰法以及孩⼦兄弟表⽰法等。现阶段,我们只⽤掌握孩⼦表⽰法&…...

JVM面试题解,垃圾回收之“对象存活判断”剖析

一、JVM怎么判断一个类/对象是不是垃圾? 先来说如何判断一个对象是不是垃圾 最常用的就是引用计数法和可达性分析 引用计数法 引用计数法为每个对象维护一个计数器来跟踪有多少个引用指向该对象。每当创建一个新的引用指向某个对象时,计数器加1&…...

【Elasticsearch】 Ingest Pipeline `processors`属性详解

在Elasticsearch中,Ingest Pipeline 的 processors 属性是一个数组,包含一个或多个处理器(processors)。每个处理器定义了一个数据处理步骤,可以在数据索引之前对数据进行预处理或富化。以下是对 processors 属性中常见…...

Springboot3 自动装配之核心文件:imports文件

注:本文以spring-boot v3.4.1源码为基础,梳理spring-boot应用启动流程、分析自动装配的原理 如果对spring-boot2自动装配有兴趣,可以看看我另一篇文章: Springboot2 自动装配之spring-autoconfigure-metadata.properties和spring…...

Ceisum无人机巡检直播视频投射

接上次的视频投影,Leader告诉我这个视频投影要用在两个地方,一个是我原先写的轨迹回放那里,另一个在无人机起飞后的地图回显,要实时播放无人机拍摄的视频,还要能转镜头,让我把这个也接一下。 我的天&#x…...

【IJCAI】2025 投稿重点记录

【IJCAI】2025 投稿重点记录 写在最前面【IJCAI】2025 投稿重点记录1. 文件说明2. 论文长度要求正式版本的页面扩展 3. 作者信息及匿名性要求4. 摘要5. 附录与补充内容6. 审稿重点与伦理声明7. 参考文献与贡献声明8. 技术要点与补充细节 🌈你好呀!我是 是…...

U3D的.Net学习

Mono:这是 Unity 最初采用的方式,它将 C# 代码编译为中间语言 (IL),然后在目标平台上使用虚拟机 (VM) 将其转换为本地机器码执行。 IL2CPP:这是一种较新的方法,它会将 C# 代码先编译为 C 代码,再由 C 编译器…...

C++ 二叉搜索树

目录 概念 性能分析 二叉搜索树的插入 二叉树的查找 二叉树的前序遍历 二叉搜索树的删除(重点) 完整代码 key与value的使用 概念 对于一个二叉搜索树 若它的左子树不为空,则左子树上所有的节点的值都小于等于根节点的值若它的右子树不为空…...

使用HTML5 Canvas 实现呼吸粒子球动画效果的原理

在网页开发领域,动画效果能够极大地提升用户体验,让页面变得更加生动有趣。今天,我们深入剖析一个基于 HTML5 Canvas 的 3D 粒子动画 —— 呼吸粒子球。通过详细解读其代码实现,我们将全面了解如何运用 HTML5 的强大功能构建出如此…...

计算机网络 (56)交互式音频/视频

一、定义与特点 定义:交互式音频/视频是指用户使用互联网和其他人进行实时交互式通信的技术,包括语音、视频图像等多媒体实时通信。 特点: 实时性:音频和视频数据是实时传输和播放的,用户之间可以进行即时的交流。交互…...

Androidstudio 中,project下的.gitignore和module下的.gitignore有什么区别,生效优先级是什么

在 Android Studio 项目中,project 根目录下的 .gitignore 文件和 module 目录下的 .gitignore 文件作用和生效优先级是不同的,理解它们之间的区别非常重要,可以避免不必要的提交和冲突。 1. project 根目录下的 .gitignore: 作…...

三篇物联网漏洞挖掘综述

由于物联网设备存在硬件资源受限、硬件复杂异构, 代码、文档未公开的问题, 物联网设备的漏洞挖掘存在较大的挑战: 硬件资源受限性: 通用动态二进分析技术需要在运行程序外围实施监控分析。由于物联网设备存储资源(存储)的受限性,…...

【动态规划】落花人独立,微雨燕双飞 - 8. 01背包问题

本篇博客给大家带来的是01背包问题之动态规划解法技巧. 🐎文章专栏: 动态规划 🚀若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅🚀 要开心要快乐顺便…...

uniapps使用HTML5的io模块拷贝文件目录

最近在集成sqlite到uniapp的过程中,因为要将sqlite数据库预加载,所以需要使用HTML5的plus.io模块。使用过程中遇到了许多问题,比如文件路径总是解析不到等。尤其是应用私有文档目录’_doc’。 根据官方文档: 为了安全管理应用的…...

Word2Vec如何优化从中间层到输出层的计算?

文章目录 Word2Vec如何优化从中间层到输出层的计算?用负采样优化中间层到输出层的计算负采样方法的关键思想负采样的例子负采样的采样方法 Word2Vec如何优化从中间层到输出层的计算? 重要性:★★ 用负采样优化中间层到输出层的计算 以词汇…...

C#中的语句

C#提供了各式各样的语句,大多数是由C和C发展而来,当然,在C#中做了相应修改。语句和表达式一样,都是C#程序的基本组成部分,在本文我们来一起学习C#语句。 1.语句 语句是构造所有C#程序的过程构造块。在语句中可以声明…...

2.3.1(项目)kv存储——框架梳理(待定)

一、过一遍代码路线: 体会:(1)接口统一、测试标准统一,软件才会有量产的过程;(b)多层框架,实现业务部分和网络部分的完全剥离。 实现多层框架: &#xff0…...

【YOLOv10改进[Backbone]】使用ConvNeXtV2替换Backbone

本文将进行在YOLOv10中使用ConvNeXtV2替换Backbone魔改v10的实践,文中含全部代码、详细修改方式。助您轻松理解改进的方法。 目录 一 ConvNeXtV2 二 魔改YOLOv10 1 整体修改 ① 添加python文件 ② 修改ultralytics/nn/tasks.py文件 2 配置文件...

在C#中添加I/O延时和持续时间

在C#中添加I/O延时和持续时间,可以通过以下方法实现。具体来说,延时可以通过Thread.Sleep、Task.Delay等方式来模拟延迟,而持续时间的控制可以通过循环结构来设定持续的时间。在执行I/O操作时,你可以在操作之间添加延时&#xff0…...

VUE之路由Props、replace、编程式路由导航、重定向

目录 1、路由_props的配置 2、路由_replaces属性 3、编程式路由导航 4、路由重定向 1、路由_props的配置 1)第一种写法,将路由收到的所有params参数作为props传给路由组件 只能适用于params参数 // 创建一个路由器,并暴露出去// 第一步…...

RabbitMQ的消息可靠性保证

文章目录 1.环境搭建1.common-rabbitmq-starter 配置防止消费者抢消息(基础配置)2.common-rabbitmq-starter-demo下创建一个生产者一个消费者 2.生产者可靠性1.开启消息超时重试机制2.生产者开启ConfirmCallback消息确认机制1.application.yml2.TestConf…...

MySQL 很重要的库 - 信息字典

在做owasp SQL 注入的时候,有个很重要的库,那就是 信息库: 这个库就是: information_schema; (准确的说,数据字典) mysql> show databases; -------------------- | Database | -------------------- | informa…...

使用C#对指定的MYSQL数据库进行备份以及常见问题

最近在开发过程中,需要做个MYSQL数据库的备份,大致总结了一下代码,以及常见的坑 string bakName "database" DateTime.Now.ToString("yyyyMMddHHmmss") ".sql";//备份后的数据库文件名var bakupFilePath &q…...

Appium(四)

一、app页面元素定位 1、通过id定位元素: resrouce-id2、通过ClassName定位:classname3、通过AccessibilityId定位:content-desc4、通过AndroidUiAutomator定位5、通过xpath定位xpath、id、class、accessibility id、android uiautomatorUI AutomatorUI自…...

jvm_threads_live_threads 和 jvm_threads_states_threads 这两个指标之间存在一定的关系,但它们关注的维度不同

jvm_threads_live_threads 和 jvm_threads_states_threads 这两个指标之间存在一定的关系,但它们关注的维度不同。以下是它们的详细关系和区别: 1. jvm_threads_live_threads 含义: 表示当前 JVM 中存活的线程总数(即当前活动的线…...

docker 部署.netcore应用优势在什么地方?

目录 1. 环境一致性 2. 简化依赖管理 3. 快速部署与扩展 4. 资源利用率高 5. 版本控制与回滚 6. 安全性 7. 生态系统支持 8. 微服务架构支持 9. 降低成本 10. 开发体验提升 总结 使用 Docker 部署 .NET Core 应用有许多优势,特别是在开发、测试和生产环境…...

SpringBoot开发(一)应用jar包

1. SpringBoot开发 1.1. 目标及简介 1.1.1. 目标 (1)掌握微服务SpringBoot在实际项目开发中常用的核心技术栈及其在典型业务场景下的应用实战。   (2)掌握SpringBoot SpringMVC Mybatis在Java Web应用开发过程的技术干货以及…...

【Linux】深刻理解动静态库

1.什么是库 库是写好的现有的,成熟的,可以复⽤的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个⼈的代码都从零开始,因此库的存在意义⾮同寻常。本质上来说库是⼀种可执⾏代码的⼆进制形式,可以被操作系统载…...

【spring 事务】事务的基本使用,事务隔离级别、事务传播机制

在Spring框架中,声明式事务管理是一种通过注解或配置文件自动管理事务的方式,而不需要手动编写事务管理代码。Transactional是Spring提供的一个注解,用于声明式事务管理,它使得事务的管理变得简单而清晰。 主要特性 自动事务管理…...

arkime 和elasticsearch安装方法二

这次试一下新的办法 先下载centOS 7 然后改成阿里云镜像 输入命令备份官方yum源配置文件 cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 下载阿里云源配置,覆盖原文件 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirr…...

GitCode 助力 AutoTable:共创 MyBatis 生态的自动表格管理新篇章

项目仓库https://gitcode.com/dromara/auto-table 解放双手,专注业务:MyBatis 生态的“自动表格”创新 AutoTable 是一款致力于为 MyBatis 生态赋予“自动表格”功能的创新插件。其核心理念是通过 Java 实体类自动生成和维护数据库的表结构&#xff0c…...

日历热力图,月度数据可视化图表(日活跃图、格子图)vue组件

日历热力图,月度数据可视化图表,vue组件 先看效果👇 在线体验https://www.guetzjb.cn/calanderViewGraph/ 日历图简单划分为近一年时间,开始时间是 上一年的今天,例如2024/01/01 —— 2025/01/01,跨度刚…...

ue5 制作,播放,停止动画蒙太奇

右键,动画蒙太奇 新建插槽 把默认插槽选择为,自己新建的插槽 然后拖一个动画进去 input换成玩家0 就可以接收键盘事件 pawn 自动控制玩家换成玩家0 找到动画蓝图 把它化成我们那边蒙太奇里面的槽 第三步:第三人称角色蓝图 按下F…...

Genetic Prompt Search via Exploiting Language Model Probabilities

题目 利用语言模型概率的遗传提示搜索 论文地址:https://www.ijcai.org/proceedings/2023/0588.pdf 项目地址:https://github.com/zjjhit/gap3 摘要 针对大规模预训练语言模型(PLMs)的即时调优已经显示出显著的潜力,尤其是在诸如fewshot学习…...

mysql之表的外键约束

MySQL表的外键约束详细介绍及代码示例 外键约束是数据库中用于维护数据完整性和一致性的重要机制。它确保一个表中的数据与另一个表中的数据相关联,防止无效的数据引用。本文将详细介绍了外键约束的各个方面,并通过具体的代码示例进行演示。 1. 外键约束…...

linux环境变量配置文件区别 /etc/profile和~/.bash_profile

在 Linux 系统中,环境变量可以定义用户会话的行为,而这些变量的加载和配置通常涉及多个文件,如 ~/.bash_profile 和 /etc/profile。这些文件的作用和加载时机各有不同。以下是对它们的详细区别和用途的说明: 文章目录 1. 环境变量…...

C++----STL(vector)

vector的介绍 vector的文档介绍:cplusplus.com/reference/vector/vector/ 1.基本概念 简单来说,vector是表示可以改变大小的数组的顺序容器。使用连续的存储位置来存储元素,因此可以通过常规指针的偏移量来高效访问。 2.内部机制 vector…...

springboot项目适配电科金仓数据库

又接到了信创适配任务,话不多说,直接开始干货 首先安装一下电科金仓的数据库,直接官网下,对应的授权也下90天的专业版,客户肯定是整个采购,365天的开发版本连接数有限制 KES相关下载地址:电科金仓-成为世界卓越的数据库产品与服务提供商 安装就不做赘述了 启动数据库…...

C# 动态创建Label和ComboBox控件并修改Text获取Text

背景:在做项目的时候可能需要根据一定数量创建某些控件并修改其属性,本文以控件label、ConboBox控件进行动态创建。 程序运行前后的的Form动态图 代码如下: using System; using System.Collections.Generic; using System.ComponentModel; …...

HP 笔记本重新安装 Windows 11 无法启动

相信你搜到这篇文章的时候, 你已经看过了网上各种关于如何在 HP 笔记本电脑上安装 Windows 11 的文章。你遇到的问题肯定不是网上那些文章讲的那么简单的问题。你遇到的一定不是你不懂如何安装 Windows,不懂如何对硬盘分区等等小白问题。 问题描述 问…...

BUUCTF_Web( XSS COURSE 1)xss

XSS即跨站脚本攻击(Cross-Site Scripting),是一种常见的网络安全漏洞. 定义 XSS攻击指攻击者在目标网站中注入恶意脚本,当用户访问该网站时,浏览器会执行这些恶意脚本,从而导致用户信息泄露、被控制等安全问…...

STM32补充——IAP

0 前置知识: FLASH相关内容:前往STM32补充——FLASH STM32三种烧录方式(看看就行): 1.ISP:In System Programming(在系统编程) 执行芯片厂商的 Bootloader 程序进入 ISP 模式&…...

APP加固的那些事

APP加固是保护APP代码逻辑的重要手段,通过隐藏、混淆、加密等操作提高软件的逆向成本,降低被破解的几率,保障开发者和用户利益。本文将介绍APP加固常见失败原因及解决方法,以及处理安装出现问题的情况和资源文件加固策略选择。 引…...

数据分析 基础定义

一、大数据的定义 数据分析是基于商业等目的,有目的的进行收集、整理、加工和分析数据,提炼有价值信息的过程。 大数据分析即针对海量的、多样化的数据集合的分析 大数据分析是一种利用大规模数据集进行分析和挖掘知识的方法。随着互联网、社交媒体、移动…...

PyTorch广告点击率预测(CTR)利用深度学习提升广告效果

目录 广告点击率预测问题数据集结构广告点击率预测模型的构建1. 数据集准备2. 构建数据加载器3. 构建深度学习模型4. 训练与评估 总结 广告点击率预测(CTR,Click-Through Rate Prediction)是在线广告领域中的重要任务,它帮助广告平…...

嵌入式入门(二)-STM32CubeMX项目开发

使用STM32CubeMX创建项目 本文使用STM32CubeMX模拟器创建一个嵌入式项目的详细流程。 New Project 根据型号搜索 搜索型号: STM32F103C8T6 启动项目 选择STM32F103C8T6后点击 Start Project 配置时钟 切换到 Clock Configuration 修改HCLK -->72MHZ 修改Input fr…...

MATLAB绘图时线段颜色、数据点形状与颜色等设置,介绍

MATLAB在绘图时,设置线段颜色和数据点的形状与颜色是提高图形可读性与美观性的重要手段。本文将详细介绍如何在 MATLAB 中设置这些属性。 文章目录 线段颜色设置单字母颜色表示法RGB 值表示法 数据点的形状与颜色设置设置数据点颜色和形状示例代码 运行结果小结 线段…...

Java菜鸟养成计划(java基础)--java运算符

java中的运算符 1、java中的运算符1.1 、 、-、 * 、/ 、 %1.2 、、-、 *、/、%1.3 、、--【自增\自减运算符】1.4、>、 <、 > 、< 、 、! 、! 1.5、&&、||、|、&1.6、&、|、~、^1.7、>> 、 <<、>>>位运算1.8、?:三目运算符…...