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没有那么难,只要你真心想学,就还是能学得会

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

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

相关文章

对于uts namespace共享的测试

前言 单单以下列命令运行虽然是root&#xff0c;还不行&#xff0c;我们需要加--privileged&#xff0c;不然会报 hostname: you must be root to change the host name docker run -it --utshost ubuntu:latest /bin/bash 如果加上--privileged后 docker run -it --priv…

Watermark 是怎么生成和传递的?

分析&回答 Watermark 介绍 Watermark 本质是时间戳&#xff0c;与业务数据一样无差别地传递下去&#xff0c;目的是衡量事件时间的进度&#xff08;通知 Flink 触发事件时间相关的操作&#xff0c;例如窗口&#xff09;。 Watermark 是一个时间戳, 它表示小于该时间戳的…

nodepad++ 插件的安装

nodepad 插件的安装 一、插件安装二、安装插件&#xff1a;Json Viewer nodepad 有 插件管理功能&#xff0c;其中有格式化json以及可以将json作为树查看的插件&#xff1a; Json Viewer 一、插件安装 1、首先下载最新的notepad 64位【https://notepad-plus.en.softonic.com…

frida动态调试入门01——定位关键代码

说明 frida是一款Python工具可以方便对内存进行hook修改代码逻辑在移动端安全和逆向过程中常用到。 实战 嘟嘟牛登录页面hook 使用到的工具 1&#xff0c;jadx-gui 2&#xff0c;frida 定位关键代码 使用jadx-gui 进行模糊搜索&#xff0c;例如搜索encyrpt之类的加密关键…

语言基础篇1——Python概述,Python是什么?Python能干什么?

概述 简介 Python&#xff0c;计算机高级语言&#xff0c;读作/ˈpaɪθən/&#xff08;英音&#xff09;、/ˈpaɪθɑːn/&#xff08;美音&#xff09;&#xff0c;意为蟒蛇&#xff0c;Python的logo为两条缠绕的蟒蛇 特点 Python以开发效率高而运行效率低著称 应用领域…

CASAIM与北京协和医院达成合作,通过CT重建和3D打印技术为医学实验提供技术辅助和研究样本

近期&#xff0c;CASAIM与北京协和医院达成合作&#xff0c;通过CT重建和3D打印技术为医学实验提供技术辅助和研究样本&#xff0c;在实验样本的一致性和实验研究的严谨性原则下设计方案&#xff0c;推动产学研一体化发展。 北京协和医院是集医疗、教学、科研于一体的现代化综合…

WPF工控机textbox获得焦点自动打开软键盘

1.通过nuget安装 osklib.wpf 2.在textbox getFoucs中敲入如下代码即可实现获得焦点弹出软键盘 private void txtPLC_IP_GotFocus(object sender, RoutedEventArgs e){try{// Osklib.OnScreenKeyboard.Close();Osklib.OnScreenKeyboard.Show();}catch (Exception ex){MessageB…

奥维转债上市价格预测

奥维转债 基本信息 转债名称&#xff1a;奥维转债&#xff0c;评级&#xff1a;AA-&#xff0c;发行规模&#xff1a;11.4亿元。 正股名称&#xff1a;奥特维&#xff0c;今日收盘价&#xff1a;168.31元&#xff0c;转股价格&#xff1a;180.9元。 当前转股价值 转债面值 / 转…

css中文本阴影特效

文字颜色渐变 .text-clip{color:transparent;font-size: 40px;font-weight: bold;background: linear-gradient(45deg, rgba(0,173,181,1) 0%, rgba(0,173,181,.4) 100%);-webkit-background-clip: text; } 文字模糊 .text-blurry{text-align: center;color: transparent;text-…

国产操作系统开放麒麟安装

国产操作系统 开放麒麟 银河麒麟 中科方德 统信UOS 红旗Linux 深度系统 优麒麟系统 开放麒麟操作系统 “开放麒麟1.0”是通过开放操作系统源代码的方式、由众多开发者共同参与研发的国产开源操作系统&#xff0c;系统的发布将有助于推动面向全场景的国产操作系统迭代更新&…

【LeetCode】剑指 Offer <二刷>(1)

目录 前言&#xff1a; 题目&#xff1a;剑指 Offer 03. 数组中重复的数字 - 力扣&#xff08;LeetCode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 写在最后&#xff1a; 前言&#xff1a; …

【GAN】pix2pix算法的数据集制作

一、A、B合并代码&#xff08;此代码由官方提供&#xff09; import os import numpy as np import cv2 import argparseparser argparse.ArgumentParser(create image pairs) parser.add_argument(--fold_A, destfold_A, helpinput directory for image A, typestr, default…

Android-关于页面卡顿的排查工具与监测方案

作者&#xff1a;一碗清汤面 前言 关于卡顿这件事已经是老生常谈了&#xff0c;卡顿对于用户来说是敏感的&#xff0c;容易被用户直接感受到的。那么究其原因&#xff0c;卡顿该如何定义&#xff0c;对于卡顿的发生该如何排查问题&#xff0c;当线上用户卡顿时&#xff0c;在线…

【taro react】(游戏) ---- 贪吃蛇

1. 预览 2. 实现思路 实现食物类&#xff0c;食物坐标和刷新食物的位置&#xff0c;以及获取食物的坐标点&#xff1b;实现计分面板类&#xff0c;实现吃食物每次的计分以及积累一定程度的等级&#xff0c;实现等级和分数的增加&#xff1b;实现蛇类&#xff0c;蛇类分为蛇头和…

OB Cloud上新,4.1版本现已全面开放

2022 年 8 月 10 日&#xff0c;OceanBase 宣布 OceanBase 公有云服务全球开服&#xff0c;帮助不同规模客户&#xff0c;在全球不同区域&#xff0c;享受同样优质的企业级数据库产品与服务。 经过近一年的发展&#xff0c;公有云业务取得了长足的发展&#xff0c;去年对客收入…

三步完成echers展示离线地图

1.首先要去阿里云提供的地图选择器网站选择你需要下载的地图矢量数据。链接 以湖北省为例&#xff1a; 2.复制上图中的JSON API&#xff0c;在浏览器输入json api链接&#xff0c;可以看到数据格式是很规整的json数据&#xff0c;在浏览器中右键保存为json格式数据&#xff0c…

Bytebase 2.7.0 - ​新增分支(Branching)功能

&#x1f680; 新功能 新增支持与 Git 类似的分支&#xff08;Branching&#xff09;功能来管理 schema 变更。支持搜索所有历史工单。支持导出审计日志。 &#x1f384; 改进 变更数据库工单详情页面全新改版。优化工单搜索体验。SQL 审核规则支持针对不同数据库进行独立配…

癌症预测新利器:弹性逻辑回归让健康更可控!

一、引言 癌症是全球范围内健康领域的重大挑战&#xff0c;早期预测和诊断对于提高治疗效果和生存率至关重要。在过去的几十年里&#xff0c;随着医学和数据科学的快速发展&#xff0c;基于机器学习和统计方法的癌症风险预测成为研究的热点。其中&#xff0c;弹性逻辑回归作为一…

热烈祝贺蜀益表面处理成功入选航天系统采购平台

经过航天系统采购平台的严审&#xff0c;眉山市蜀益表面处理科技有限公司成功入选中国航天系统采购供应商库。航天系统采购平台是航天系统内企业采购专用平台&#xff0c;服务航天全球范围千亿采购需求&#xff0c;目前&#xff0c;已有华为、三一重工、格力电器、科大讯飞等企…

使用php实现微信登录其实并不难,可以简单地分为三步进行

使用php实现微信登录其实并不难&#xff0c;可以简单地分为三步进行。 第一步&#xff1a;用户同意授权&#xff0c;获取code //微信登录public function wxlogin(){$appid "";$secret "";$str"http://***.***.com/getToken";$redirect_uriu…