unity学习笔记12

一、物理系统

如何让一个球体受到重力的影响?

只要给物体添加刚体组件(Rigidbody),就可以使其受到重力影响

1.刚体(Rigidbody): 刚体是一个组件,用于使游戏对象受到物理引擎的控制。它可以给对象添加质量、速度、角速度等属性,从而模拟物体的运动。

2.碰撞检测有三种主要的模式:离散(Discrete)、持续(Continuous)、和连续动态(Continuous Dynamic)。

①离散(Discrete)

描述: 离散碰撞检测是一种基本的碰撞检测模式。在每一帧结束时,系统会检测物体的碰撞情况。如果两个物体在当前帧的某个时刻发生了碰撞,系统将在下一帧中处理这个碰撞。

用途: 适用于大多数情况,性能较高。但对于非常高速的物体,可能会导致穿透的问题,因为它们可能在两次检测之间穿越其他物体。

②持续(Continuous)

描述: 持续碰撞检测会检查物体在整个运动过程中是否会发生碰撞。它通过检测物体的整个运动路径,以确保在任何时刻都能够准确地检测到碰撞。

用途: 适用于高速运动的物体,可以防止高速运动时的穿透问题。但相对来说计算成本较高,可能会对性能产生一定影响。

③连续动态(Continuous Dynamic)

描述: 连续动态碰撞检测是持续碰撞检测的一种改进版本,专门为高速运动的物体设计。它通过预测物体在整个帧期间的运动轨迹,以提高性能,减少计算成本。

用途 适用于需要高性能同时又需要防止高速运动穿透问题的场景。

如何检测碰撞?

产生碰撞的两个条件:

①只有当两个物体身上都有碰撞器组件时,才能产生碰撞。比如这个球体的 Sphere Collider。

②至少有一个物体身上有存在刚体

这个中心属可以控制碰撞器的位置,真正产生碰撞是这个线框。

通过脚本去监听碰撞。

监听碰撞发生了

private void OnCollisionEnter(Collision collision){}
持续碰撞中

private void OnCollisionStay(collision collision){}

结束碰撞

private void OnCollisionExit(Collision collision){} 

代码中的 collision 包含了碰撞信息,比如可以获取碰撞者的 name

Debug.Log(collision.gameObject.name);
 

现在有个要求是当物体产生碰撞后,产生爆炸效果并销毁自己

创建一个爆炸预设体,并将预设体关联
public GameObject Prefab;

 监听碰撞发生

private void OnCollisionEnter(Collision collision){
      lnstantiate (Prefab, transform.position,Quaternion.identity);
      Destroy (gameObject);

}

效果如下:

二、触发器

触发器(Trigger)是一种用于检测物体之间相互接触的机制。与碰撞器不同,触发器不会导致物体的物理交互,但它允许你在物体之间进行交互检测。触发器通常用于实现触发事件、检测进入或退出区域等场景。

触发条件与刚体相似,区别是要把一个物体的碰撞器的属性设置为触发器,这样物体之间就不会产生碰撞了。

通过脚本监听触发

监听触发发生了

private void OnTriggerEnter(Collision other){}
持续触发中

private void OnTriggerStay(collision other){}

结束触发

private void OnTriggerExit(Collision other){} 

这里的 Other 参数表示进入触发的碰撞器

举例:

当这个物体到达这个位置的时候,前面的墙消失。

代码如下:

   private void OnTriggerEnter(Collider other)
    {
        GameObject door = GameObject.Find("Door");
        if(door != null)
        {
            door.SetActive(false);
        }

    }

触发后的效果:

触发器的注意事项:

①.触发器需要至少一个物体有Collider组件,并且其中一个必须勾选"Is Trigger"。

②.如果勾选了"Is Trigger",则物理引擎不会自动处理碰撞反应,需要通过代码来处理触发器事件。

③.触发器通常用于实现特定区域内的事件、触发检测等场景。

④.触发器不参与物理碰撞,因此不会导致物体的物理反应。
 

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

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

相关文章

【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能

文章目录 ⭐⭐⭐Spring核心源码分析自定义Spring框架⭐⭐⭐一、Spring使用回顾二、Spring核心功能结构1、Spring核心功能2、bean概述 三、Spring IOC相关接口分析1、BeanFactory解析2、BeanDefinition解析3、BeanDefinitionReader解析4、BeanDefinitionRegistry解析5、创建容器…

Unity引擎:创造无限可能的游戏开发平台

Unity引擎:创造无限可能的游戏开发平台 一、Unity引擎概述1.1 什么是Unity引擎?1.2 Unity引擎的特点和优势 二、Unity开发环境和工具2.1 Unity编辑器2.2 支持的平台2.3 脚本语言2.4 图形和音频工具 三、Unity游戏开发流程四、示例应用场景五、结论&#…

three.js--立方体

作者:baekpcyyy🐟 使用three.js渲染出可以调节大小的立方体 1.搭建开发环境 1.首先新建文件夹用vsc打开项目终端 2.执行npm init -y 创建配置文件夹 3.执行npm i three0.152 安装three.js依赖 4.执行npm I vite -D 安装 Vite 作为开发依赖 5.根…

对接电商平台高效获取各大电商平台数据,商品详情数据代码示例

电商可以通过使用API接口获取商品信息数据。API是应用程序编程接口的缩写,它允许程序之间进行通信和数据传输。为了获取商品信息数据,电商可以利用API接口向商品供应商的数据库发送请求,然后接收并解析返回的数据。 具体来说,电商…

xorm源码学习

文章目录 XORM源码浅析及实践ORMORM vs. SQLXORM软件架构 ORM 引擎 Engine——DBM*core.DB Golang:database/sql 源码基本结构连接复用,提高性能。增加数据库连接池数量连接管理 database/sql主要内容:sql.DB创建数据库连接sql.Open()DB.conn…

C++设计模式之工厂模式(中)——工厂模式

工厂模式 工厂模式介绍示例示例使用运行结果工厂模式与简单工厂模式区别 工厂模式 工厂模式在简单工厂模式的基础之上进行了改进。当需要生产的产品种类增加,可以通过新增子类工厂来生产,没有破坏程序设计原则中的开放封闭原则。 介绍 工厂模式先抽象…

全程云OA SQL注入漏洞复现

0x01 产品简介 全程云OA为企业提供日常办公管理、公文管理、工作请示、汇报、档案、知识体系、预算控制等26个功能,超过100多个子模块。为企业内部提供高效、畅通的信息渠道,同时也能大力推动公司信息系统发展,提高企业的办公自动化程度和综合…

Doris数据模型的选择建议(十三)

Doris 的数据模型主要分为 3 类:Aggregate、Uniq、Duplicate Aggregate: Doris 数据模型-Aggregate 模型 Uniq:Doris 数据模型-Uniq 模型 Duplicate:Doris 数据模型-Duplicate 模型 因为数据模型在建表时就已经确定,且无法修改…

Linux:可视化管理工具Webmin的安装

一、下载 地址:Webmin官网 我这里下载的是1.700-1版本 二、安装 1、在虚拟机上新建目录并安装软件 mkdir /opt/webmin rpm -ivh webmin-1.700-1.noarch.rpm2、修改webmin的root密码 /usr/libexec/webmin/changepass.pl /etc/webmin root 1234563、修改端口(可…

RabbitMQ消息的应答

消息的应答机制 消费者完成一个任务可能需要一段时间,如果其中一个消费者处理一个长的任务并仅只完成了部分突然它挂掉了,会发生什么情况。RabbitMQ 一旦向消费者传递了一条消息,便立即将该消息标记为删除。在这种情况下,突然有个…

【python程序】把小于10的数值都变成1

【python程序】把小于10的数值都变成1 import numpy as np import xarray as xra xr.DataArray(np.arange(25).reshape(5, 5)) a[np.where(a < 10)] 1 print(a)

ArkTS-警告弹窗

警告弹窗 显示警告弹窗组件&#xff0c;可设置文本内容与响应回调。 使用 Button(点击警告).onClick(()> {AlertDialog.show({title: 标题,message: 内容,autoCancel: true,alignment: DialogAlignment.Center,gridCount: 4,offset: { dx: 0, dy: -20 },primaryButton: {va…

redis性能管理

redis的数据库是存放在内存当中&#xff0c;所以对内存的监控至关重要 redis内存监控和解析 1.如何查看redis内存使用情况 [rootlocalhost utils]# redis-cli -h 20.0.0.170 -p 6379 20.0.0.170:6379> info memory used_memory:853336 //redis中数据占用的内存 use…

手敲myarraylist,深入了解其运行逻辑

1、自定义MyArrayList类 该类里面基本有两个属性&#xff0c;一个是用来存放数据的数组&#xff0c;另外一个是用来描述已经存放数据的数量。同时设置arraylist表的默认长度为10&#xff1b;代码如下&#xff1a; public class MyArrayList {private int[] elem;private int u…

自学成为android framework工程师需要准备哪些装备-千里马车载车机系统开发学习

背景 hi&#xff0c;粉丝朋友们&#xff1a; 大家好&#xff01;经常有很多学员买课同学都会问到需要准备哪些装备&#xff0c;我也回答了很多学员了&#xff0c;今天就搞一篇文章来统一说明一下&#xff0c;告诉一下大家如果你想从一个framework新手变成一个framework开发的高…

Element-Plus 图标自动导入

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

机器学习——决策树

1.决策树 2.熵&#xff08;不确定程度&#xff09; 3.信息增益 & 信息增益比 3.1 信息增益 & 信息增益比 的 概念 3.2 案例解释说明 &#xff13;.&#xff12;.&#xff11;数据集说明 &#xff13;.&#xff12;.&#xff12;计算 &#xff14;&#xff0e;&#x…

为工业企业介绍新版 PT ISIM

&#x1f3ed; 我们发布了新版 PT Industrial Security Incident Manager - 4.4&#xff0c;这是一款深度流程流量分析系统。 以下是主要变化的简要概述 &#x1f5a5; 新增 microView Sensor 它安装在紧凑型工业 PC 上&#xff0c;设计用于小型自动化设施&#xff1a;6-10 …

Java实现简单的王者荣耀游戏

一、创建新项目 首先创建一个新的项目&#xff0c;并命名为wangzherongyao。 其次在飞翔的鸟项目下创建一个名为img的文件夹用来存放游戏相关图片。详细如下图&#xff1a; 二、游戏代码 1、创建怪物类 1.bear&#xff1a; package beast;import wangzherogyao.GameFrame;…

Linux 基本语句_13_消息队列

概念&#xff1a; 不同进程能通过消息队列来进行通信&#xff0c;不同进程也能获取或发送特定类型的消息&#xff0c;即选择性的收发消息。 一般一个程序采取子进程发消息&#xff0c;父进程收消息的模式 常用函数功能&#xff1a; fork(); // 创建子进程 struct msgbuf{ …