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

Unity碰撞检测(3D和2D)

Unity碰撞检测3D和2D

  • 前言
  • 准备材料
    • 3D
    • 2D
  • 代码
    • 3D
      • 使用OnCollisionEnter()进行碰撞
        • Collider状态
        • 代码
      • 使用OnTriggerEnter()进行碰撞
        • Collider状态
        • 代码
    • 2D
      • 使用OnCollisionEnter2D()进行碰撞
        • Collider2D状态
        • 代码
      • 使用OnTriggerEnter2D()进行碰撞
        • Collider2D状态
        • 代码
    • 区别
      • 3D
        • 代码
          • OnCollisionEnter()
          • OnTriggerEnter()
        • 碰撞显示效果
          • OnCollisionEnter()
          • OnTriggerEnter()
      • 2D
        • 代码
          • OnCollisionEnter2D()
          • OnTriggerEnter2D()
        • 碰撞显示效果
          • OnCollisionEnter2D()
          • OnTriggerEnter2D()
  • 提示
  • 结语

前言

碰撞检测可以说时学习Unity中最重要的一个部分,以为在游戏中,想要游戏进行交互,碰撞时非常重要的,而我在网上查了很多教程,但是都没有成功,后来经过我的仔细检查代码与修改,终于成功了

准备材料

3D

简单Unity跑酷游戏
简单跑酷游戏
zhong_dotPlayer两个实体都加上碰撞体组件
比如:Box Collider
Player加上刚体组件
比如:Rigidbody
把刚体组件里面的Collision Detection模式改为Cintinuous

2D

在这里插入图片描述

zhong_dotPlayer两个实体都加上碰撞体组件
比如:Box Collider 2D
Player加上刚体组件
比如:Rigidbody 2D
把刚体组件里面的Collision Detection模式改为Cintinuous

代码

这一个我们将代码写在Player_move.cs里面

3D

使用OnCollisionEnter()进行碰撞

Collider状态

在这里插入图片描述

代码

void OnCollisionEnter(Collision collision){if (collision.gameObject.name == "zhong_dot"){Debug.Log("开始碰撞");}
}

此时我们可以看到,在碰撞函数里面的参数类型是Collision
并且指定的碰撞检测方式,if里面写的表达式是

参数名.gameObject.name ==  "碰撞目标的名称"

使用OnTriggerEnter()进行碰撞

Collider状态

在这里插入图片描述
从上图中可以看出是Is Trigger是出于勾选的状态,并且只需要其中一个勾选Is Trigger状态即可

代码

void OnTriggerEnter(Collider collision){if (collision.GetComponent<Collider>().name == "zhong_dot"){Debug.Log("开始碰撞")}
}

此时我们可以看到,在碰撞函数里面的参数类型是Collider
并且指定的碰撞检测方式,if里面写的表达式是

参数名.GetComponent<Collider>().name == "碰撞目标的名称"

2D

使用OnCollisionEnter2D()进行碰撞

Collider2D状态

在这里插入图片描述

代码

void OnCollisionEnter2D(Collision2D collision){if (collision.gameObject.name == "zhong_dot"){Debug.Log("开始碰撞");}
}

此时我们可以看到,在碰撞函数里面的参数类型是Collision2D
并且指定的碰撞检测方式,if里面写的表达式是

参数名.gameObject.name ==  "碰撞目标的名称"

使用OnTriggerEnter2D()进行碰撞

Collider2D状态

在这里插入图片描述

从上图中可以看出是Is Trigger是出于勾选的状态,并且只需要其中一个勾选Is Trigger状态即可

代码

void OnTriggerEnter2D(Collider2D collision){if (collision.GetComponent<Collider2D>().name == "zhong_dot"){Debug.Log("开始碰撞")}
}

此时我们可以看到,在碰撞函数里面的参数类型是Collider2D
并且指定的碰撞检测方式,if里面写的表达式是

参数名.GetComponent<Collider2D>().name == "碰撞目标的名称"

区别

3D

代码

OnCollisionEnter()

此时我们可以看到,在碰撞函数里面的参数类型是Collision
并且指定的碰撞检测方式,if里面写的表达式是

参数名.gameObject.name == "碰撞目标的名称"
OnTriggerEnter()

此时我们可以看到,在碰撞函数里面的参数类型是Collider
并且指定的碰撞检测方式,if里面写的表达式是

参数名.GetComponent<Collider>().name == "碰撞目标的名称"

碰撞显示效果

OnCollisionEnter()

就会有碰撞之后被弹开的结果

OnTriggerEnter()

就不会有碰撞之后被弹开的结果

2D

代码

OnCollisionEnter2D()

此时我们可以看到,在碰撞函数里面的参数类型是Collision2D
并且指定的碰撞检测方式,if里面写的表达式是

参数名.gameObject.name == "碰撞目标的名称"
OnTriggerEnter2D()

此时我们可以看到,在碰撞函数里面的参数类型是Collider2D
并且指定的碰撞检测方式,if里面写的表达式是

参数名.GetComponent<Collider2D>().name == "碰撞目标的名称"

碰撞显示效果

OnCollisionEnter2D()

就会有碰撞之后被弹开的结果

OnTriggerEnter2D()

就不会有碰撞之后被弹开的结果

提示

我建议你们在写代码的时候,一定要仔细查看代码的大小写,否则程序会不知不觉不出现结果,就像我,写一个On结果写成了on,导致一直没有结果

结语

其实学习Unity没有那么难,只要你真心想学,就还是能学得会

相关文章:

Unity碰撞检测(3D和2D)

Unity碰撞检测3D和2D 前言准备材料3D2D 代码3D使用OnCollisionEnter()进行碰撞Collider状态代码 使用OnTriggerEnter()进行碰撞Collider状态代码 2D使用OnCollisionEnter2D()进行碰撞Collider2D状态代码 使用OnTriggerEnter2D()进行碰撞Collider2D状态代码 区别3D代码OnCollisi…...

android:控件TextView

一、系统学习Android控制键TextView&#xff0c;我的笔记里面有尝试学着使用自定义控件。 二、具体内容 1.如果在代码中给textView赋值&#xff0c;在xml中也给textView赋值了最后运行出来的结果显示代码中赋的值。因此得出结论&#xff0c;代码中的赋值会覆盖xml所附的值。 …...

3D风速仪 Gill Instruments Limited_R3-50 R3-100 and R3A -100 Manual

R3测量超声波脉冲从上部换能器到相反的下部换能器所花费的时间&#xff0c;并将其与脉冲从下部换能器到上部换能器的时间进行比较。 同样&#xff0c;在其他上下换能器之间比较时间。 如图1所示&#xff0c;每对换能器之间沿轴的空气速度可以从每条轴上的飞行次数计算出来。 …...

深度学习怎么学?

推荐这本小白看的《深度学习&#xff1a;从基础到实践&#xff08;上下册&#xff09;》。 深度学习&#xff1a;从基础到实践&#xff08;上下册&#xff09; 深入浅出的讲述了深度学习的基本概念与理论知识&#xff0c;不涉及复杂的数学内容&#xff0c;零基础小白也能轻松掌…...

WPF 数据验证

WPF提供了能与数据绑定系统紧密协作的验证功能。提供了两种方法用于捕获非法值&#xff1a; 1、可在数据对象中引发错误。 可以在设置属性时抛出异常&#xff0c;通常WPF会忽略所有在设置属性时抛出的异常&#xff0c;但可以进行配置&#xff0c;从而显示更有帮助的可视化指示…...

IDEA的maven想显示层级关系,而非平级

新版和旧版的IDEA的位置不一样&#xff0c;2023.2.1的版本在右上角的“” 这个位置 如图所示&#xff1a; 然后点击按模块分组&#xff1a;...

(八)k8s实战-身份认证与权限

一、认证 User AccountsService Accounts Service Account 自动化&#xff1a; Service Account Admission ControllerToken ControllerService Account Controller 1、Service Account Admission Controller 通过 Admission Controller 插件来实现对 pod 修改&#xff0c…...

数学建模:TOPSIS分析

&#x1f506; 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 TOPSIS分析法 算法流程 假设有m个评价对象&#xff0c;n个评价指标&#xff0c;首先需要进行指标的正向化&#xff1a; 极大型极小型单点型区间型 然后对正向化后的矩阵进行标准化&#xff0c;得到 Z Z Z…...

【Qt学习】10 利用QSharedMemory实现单例运行

问题 让应用程序只有一个运行实例 QSharedMemory除了可以完成进程间通信&#xff0c;还可以实现应用程序单例化。 解法 首先&#xff0c;看看QSharedMemory的几个函数&#xff1a; 1、QSharedMemory(const QString &key, QObject *parent Q_NULLPTR)构造函数 该构造函数…...

FPGA应用于图像处理

FPGA应用于图像处理 FPGA&#xff08;Field-Programmable Gate Array&#xff09;直译过来就是现场可编程门阵列。是一种可以编程的逻辑器件&#xff0c;具有高度的灵活性&#xff0c;可以根据具体需求就像编程来实现不同的功能。 FPGA器件属于专用的集成电流中的一种半定制电…...

vscode python 无法引入上层目录解决

在vscode 中.vscode 配置如下 { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid830387 “version”: “0.2.0”, “configurati…...

[开发|java] java list 取某个属性最大的项

示例代码: import java.util.*;class Person {private String name;private int age;public Person(String name, int age) {this.name name;this.age age;}public int getAge() {return age;} }public class Main {public static void main(String[] args) {List<Person…...

关闭浏览器的跨域校验

首发博客地址 问题描述 当你访问资源失败&#xff0c;并遇到以下类似提示时&#xff1a; Access to script at 资源路径 from origin null has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, isolated-app, chrom…...

USRP 简介,对于NI软件无线电你所需要了解的一切

什么是 USRP 通用软件无线电外设( USRP ) 是由 Ettus Research 及其母公司National Instruments设计和销售的一系列软件定义无线电。USRP 产品系列由Matt Ettus领导的团队开发&#xff0c;被研究实验室、大学和业余爱好者广泛使用。 大多数 USRP 通过以太网线连接到主机&…...

RTE_Driver驱动框架和Keil下开发需要支持的xxx_DFP软件包分析

1.RTE_Driver驱动框架 RTE_Driver代表"Run-Time Environment Driver"&#xff0c;是Keil MDK&#xff08;Microcontroller Development Kit&#xff09;中的一个概念。Keil MDK是一种用于嵌入式系统开发的集成开发环境&#xff0c;提供了开发、编译、调试等一系列工具…...

ImportError: Cannot load dynamic library. Did you compile LSD?

1、问题描述 >>> import pylsd2 Traceback (most recent call last):File "<stdin>", line 1, in <module>File "/data/data/wangzy-p-wangzy-p3-volume-pvc-0fee40a7-7013-49b4-8cfb-b4ab0394165b/.conda/envs/paddle/lib/python3.8/sit…...

音频应用编程

目录 ALSA 概述alsa-lib 简介sound 设备节点alsa-lib 移植编写一个简单地alsa-lib 应用程序一些基本概念打开PCM 设备设置硬件参数读/写数据示例代码之PCM 播放示例代码值PCM 录音 使用异步方式PCM 播放示例-异步方式PCM 录音示例-异步方式 使用poll()函数使用poll I/O 多路复用…...

软件测试/测试开发丨Python 学习笔记 之 链表

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接&#xff1a;https://ceshiren.com/t/topic/26458 链表与数组的区别 复杂度分析 时间复杂度数组链表插入删除O(n)O(1)随机访问O(1)O(n) 其他角度分析 内存连续&#xff0c;利用CPU的机制&#xff0…...

Matlab 使用经验分享(常用函数介绍;矩阵常见计算)

Matlab 使用经验分享 大家好&#xff01;最近有很多朋友询问我关于 Matlab 的使用&#xff0c;于是我决定写一篇博客来分享一下我的经验。对于数学和编程爱好者来说&#xff0c;Matlab 是一个非常有用的工具。我自己在数学实验和数学建模竞赛中也经常使用它。那么&#xff0c;…...

软件工程(十七) 行为型设计模式(三)

1、观察者模式 简要说明 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新 速记关键字 联动,广播消息 类图如下 基于上面的类图,我们来实现一个监听器。类图中的Subject对应我们的被观察对象接口(IObservable),…...

MySQL中redo log 和 bin log的本质区别,别再搞混了!

很多初学者容易把 redo log 和 binlog 搞混&#xff0c;它们都是 MySQL 的日志&#xff0c;但有着本质的区别&#xff1a;对比维度redo logbin log所属层级InnoDB 存储引擎层MySQL Server 层日志类型物理日志&#xff0c;记录数据页的修改逻辑日志&#xff0c;记录SQL语句或行变…...

Midjourney盐印相风格实战手册(附12组可复用Prompt模板+SDXL交叉验证数据)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Midjourney盐印相风格的视觉溯源与美学内核 盐印相&#xff08;Salted Paper Print&#xff09;是19世纪早期摄影术诞生之初的核心工艺&#xff0c;由亨利福克斯塔尔博特于1839年系统完善。其本质是将纸基浸入…...

印度市场语音产品上线倒计时!ElevenLabs印地文TTS合规指南(含RBI语音存储规范、UIDAI语音采集红线)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;印度市场语音产品上线倒计时&#xff01;ElevenLabs印地文TTS合规指南&#xff08;含RBI语音存储规范、UIDAI语音采集红线&#xff09; 面向印度市场的语音合成产品上线前&#xff0c;必须严格遵循印度央行&a…...

3分钟快速检测微信单向好友:告别隐形社交困扰的实用指南

3分钟快速检测微信单向好友&#xff1a;告别隐形社交困扰的实用指南 【免费下载链接】WechatRealFriends 微信好友关系一键检测&#xff0c;基于微信ipad协议&#xff0c;看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriends …...

ncmdumpGUI:3分钟解锁网易云音乐NCM加密文件,让音乐自由流动

ncmdumpGUI&#xff1a;3分钟解锁网易云音乐NCM加密文件&#xff0c;让音乐自由流动 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 当智能音箱对你说"不…...

遥感影像分割选哪个?eCognition里8种方法(棋盘、多尺度、分水岭...)的实战避坑指南

遥感影像分割实战指南&#xff1a;eCognition八大算法深度解析与选型策略 1. 遥感影像分割的技术演进与核心挑战 在数字地球时代&#xff0c;高分辨率遥感影像已成为地理信息提取的重要数据源。与传统基于像素的分类方法相比&#xff0c;面向对象影像分析&#xff08;OBIA&am…...

X光安检目标识别分割数据集lableme格式2000张5类别

数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件)图片数量(jpg文件个数)&#xff1a;2000标注数量(json文件个数)&#xff1a;2000标注类别数&#xff1a;5标注类别名称:["Electronic Items","Laptop",&quo…...

VMPDump终极指南:如何轻松破解VMProtect 3.X x64代码保护

VMPDump终极指南&#xff1a;如何轻松破解VMProtect 3.X x64代码保护 【免费下载链接】vmpdump A dynamic VMP dumper and import fixer, powered by VTIL. 项目地址: https://gitcode.com/gh_mirrors/vm/vmpdump 你是否曾面对被VMProtect保护的软件感到束手无策&#x…...

PyQt5串口上位机开发指南:从环境搭建到数据可视化实战

1. 项目概述与核心价值最近在做一个嵌入式项目&#xff0c;调试阶段需要频繁地和下位机进行数据交互。每次改个参数、读个状态&#xff0c;都得打开串口调试助手&#xff0c;手动输入十六进制命令&#xff0c;再盯着返回的数据一个个换算&#xff0c;效率低不说&#xff0c;还容…...

如何永久激活IDM?2024终极免费激活与试用重置完全指南

如何永久激活IDM&#xff1f;2024终极免费激活与试用重置完全指南 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script IDM Activation Script是一款专为Internet Dow…...