当前位置: 首页 > 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 基础 定义与作用 定义:碰撞体是游戏中用于检测物体之间碰撞的组…...

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 基本语法&#xff1a; select 字段列表 from 表名列表 where 条件列表 group by 分组字段列表 having 分组后条件列表 order by 排序字段列表 limit 分页参数 基本查询 关键字&#xff1a;SELECT 查询多个字段&#xff1a;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 设计工具 导入图标后拖入画板里面&#xff0c;右键选择轮廓化 将图标导出...

2008-2020年各省城镇登记失业率数据

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

Linux——信号量和(环形队列消费者模型)

Linux——线程条件变量&#xff08;同步&#xff09;-CSDN博客 文章目录 目录 文章目录 前言 一、信号量是什么&#xff1f; 二、信号量 1、主要类型 2、操作 3、应用场景 三、信号量函数 1、sem_init 函数 2、sem_wait 函数 3、sem_post 函数 4、sem_destroy 函数 ​​​​​​…...

【JOIN】关键字在MySql中的详细使用

目录 INNER JOIN&#xff08;内连接&#xff09; LEFT JOIN&#xff08;左连接&#xff09; RIGHT JOIN&#xff08;右连接&#xff09; FULL JOIN&#xff08;全连接&#xff09; 示例图形化解释JOIN的不同类型 INNER JOIN&#xff1a; LEFT JOIN&#xff1a; RIGHT J…...

渗透测试--攻击常见的Web应用

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

window系统annaconda中同时安装paddle和pytorch环境

一、下载nvidia驱动 Download The Official NVIDIA Drivers | NVIDIA 查看GPU信息 nvidia-smi 二、安装cuda CUDA Toolkit 11.8 Downloads | NVIDIA Developer 按以下步骤下载cuda安装包&#xff0c;我使用的cuda11.8 下载后双击一路下一步安装即可。 查看cuda版本 nvcc …...

python-leetcode-简化路径

71. 简化路径 - 力扣&#xff08;LeetCode&#xff09; class Solution:def simplifyPath(self, path: str) -> str:# 使用栈来处理路径stack []# 分割路径&#xff0c;以 / 为分隔符parts path.split(/)for part in parts:if part or part .:# 空字符串或 .&#xff0…...

浅谈 PID 控制算法

PID 控制算法概念 在我们的生活中可能大家都没有听说过 PID 控制算法&#xff0c;但它可以说是无处不在&#xff0c;小到空调的温度控制、无人机的精准悬停、机器人运作系统&#xff0c;大到飞机和火箭的飞行姿态控制都有 PID 的身影。 PID 控制算法&#xff0c;即比例 - 积分…...

ailx10的专栏电子书(2022版)

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

WPS按双字段拆分工作表到独立工作簿-Excel易用宝

我们老板真是事多&#xff0c;他说要把这个工作表以月份和支付方式的维度&#xff0c;以这两个字段进行拆分工作表&#xff0c;而且拆分出来的表格要保存一个新的工作簿。 啥事都交给我&#xff0c;他还以为我有三头六臂呢&#xff0c;还好我有易用宝&#xff0c;可以轻松拆分…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...