unity学习笔记12

news2024/11/18 19:43:32

一、物理系统

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

只要给物体添加刚体组件(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.coloradmin.cn/o/1270109.html

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

相关文章

Linux 问题“:对pthread_create未定义的引用“解决方案

用vs2019写多线性程时需要使用pthread_create()用于创建线程,项目里加了所需要的头文件#include <pthread.h>但编译却报对pthread_create未定义的引用的错误,根本原因是没有包含所需要的库 在Linux下用gcc编译报错: 解决方案1: 1 右键项目选择属性 2找的链接器下的输入…

Linux socket编程(8):shutdown和close的区别详解及例子

在Linux中有两种操作可以终止socket间的进程通信&#xff1a;close和shutdown。但这两种函数在使用时有着不同的行为和效果。在网络编程中&#xff0c;正确地选择和使用这些操作至关重要&#xff0c;因为它们直接影响着通信的结束和资源的释放。本文将介绍close和shutdown函数&…

ESP32-Web-Server编程- WebSocket 编程

ESP32-Web-Server编程- WebSocket 编程 概述 在前述 ESP32-Web-Server 实战编程-通过网页控制设备的 GPIO 中&#xff0c;我们创建了一个基于 HTTP 协议的 ESP32 Web 服务器&#xff0c;每当浏览器向 Web 服务器发送请求&#xff0c;我们将 HTML/CSS 文件提供给浏览器。 使用…

Linux相关--笔试和面试高频

Linux RedHat公司已经宣布停止维护CentOS服务器操作系统&#xff0c;可以选择华为开源的欧拉系统、阿里开源的龙蜥系统和腾讯开源的TencentOS系统 面试 几个基本的Linux命令 pwd #查看当前绝对路径 结果/home/stu touch / vi编辑器 #创建文件 mkdir -p /home/stu/test #当…

智能工厂是什么?

今天就聊聊企业智能工厂的打造&#xff0c;企业想实现数字化转型建立智能工厂&#xff0c;就需要先建设数字化车间&#xff0c;可以说数字化车间是建设智能工厂的重要一环&#xff0c;智能工厂的基础是数字化车间。数字化车间可以实现企业生产过程中车间计划调度、工艺执行管理…

高项备考葵花宝典-项目范围管理输入、输出、工具和技术

项目范围管理包括确保项目“做”且“只做”所需的全部工作&#xff08;即不能少做&#xff0c;也不能多做&#xff0c;如果多做&#xff0c;就要消耗团队额外的时间和资源&#xff0c;并且无法被认可&#xff09;&#xff0c;以成功完成项目。项目范围管理主要在于定义和控制哪…

【MySQL数据库】SQL查询语句总结

目录 一、查询数据 1.1 基本查询语句 1.2 表单查询 1.3 WHERE子句 1.3.1 IN关键字查询 1.3.2 Between查询范围 1.3.3 Like匹配查询 1.3.4 AND多条件查询&#xff08;等同于&&&#xff09; 1.3.5 OR多条件查询&#xff08;等同于||&#xff09; 1.3.6 LIMIT子句 1.3.7 对…

聚观早报 |亚马逊AWS发布新AI芯片;拼多多Q3营收增长94%

【聚观365】11月30日消息 亚马逊AWS发布新AI芯片 拼多多Q3营收增长94% Redmi K70全新国风配色揭晓 英伟达扩大自动驾驶中国团队 华为nova 12参数细节曝光 亚马逊AWS发布新AI芯片 在美国时间周二举办的Reinvent大会上&#xff0c;亚马逊旗下的云计算部门AWS发布了新的人工…

【开源视频联动物联网平台】为什么需要物联网网关?

在一些物联网项目中&#xff0c;物联网网关这一产品经常被涉及。那么&#xff0c;物联网网关究竟有何作用&#xff1f;具备哪些功能&#xff1f;同时&#xff0c;我们也发现有些物联网设备并不需要网关。那么&#xff0c;究竟在何时需要物联网网关呢&#xff1f; 物联网的架构…

linux安装minIo(亲测可用)

一、创建文件夹 进入opt文件夹 cd /opt/创建minio文件夹&#xff1b; mkdir minio赋予权限 chmod 777 minio/执行完后查看目录 进到minio文件夹 创建bin目录 mkdir bin创建data目录 mkdir data创建log touch minio.log创建start.sh文件&#xff0c;并写入数据(不会vi或…

Stream API练习题

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 考虑到Stream API在实际…

abapgit 安装及使用

abapgit 需求 SA[ BASIS 版本 702 及以上 版本查看路径如下&#xff1a; 安装步骤如下&#xff1a; 1. 下载abapgit 独立版本 程序 链接如下&#xff1a;raw.githubusercontent.com/abapGit/build/main/zabapgit_standalone.prog.abap 2.安装开发版本 2.1 在线安装 前置条…

智慧公厕为城市智慧管理提供强力有的数据支持

在当今科技飞速发展的时代&#xff0c;城市管理正面临着前所未有的挑战与机遇。而在这个城市发展的脚步日新月异的同时&#xff0c;一项看似不起眼的技术却正在默默地为城市的智慧管理提供着强有力的支持——那就是智慧公厕。这些不起眼的公共设施不仅仅是人们日常生活的一部分…

Linux系统平均负载

我们经常会使用 top 命令来查看系统的性能情况&#xff0c;在 top 命令的第一行可以看到 load average 这个数据&#xff0c;如下图所示&#xff1a; load average 包含 3 列&#xff0c;分别表示 1 分钟、5 分钟和 15 分钟的 系统平均负载 系统平均负载&#xff1a; 如果将 …

多媒体信号处理复习笔记 --脑图版本

多媒体信号处理复习笔记 --脑图版本 依据 [2020多媒体信号处理复习笔记] 考前复习时使用Xmind制作 例图: PDF下载 BaiduYunPan 提取码&#xff1a;jbyw CSDN 下载

LeetCode2514.统计同位异构字符串数目

题目简单&#xff0c;关键是灵茶山艾府的代码写起来太优美&#xff0c;不得不记录一下 const int Mod 1e97; using ll long long; ll qmi(ll a,ll b,ll mod){ll res 1;while(b){if(b&1)res res*a%mod;aa*a%mod;b>>1;}return res; }class Solution { public:int c…

[黑皮系列] 计算机网络:自顶向下方法(第8版)

文章目录 《计算机网络&#xff1a;自顶向下方法&#xff08;第8版&#xff09;》简介作者目录前言配套公开课 《计算机网络&#xff1a;自顶向下方法&#xff08;第8版&#xff09;》 出版信息&#xff1a; 原作名: Computer Networking: A Top-Down Approach 作者: [美] Jame…

LangChain 15根据问题自动路由Router Chain确定用户的意图

LangChain系列文章 LangChain 实现给动物取名字&#xff0c;LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄LangChain 4用向量数据库Faiss存储&#xff0c;读取YouTube的视频文本搜索I…

ApiSix的docker 容器化部署及使用

⼀&#xff0e;etcd安装 Docekr安装Etcd 环境准备 此处安装&#xff0c;是利⽤下载的 etcd 源⽂件&#xff0c;利⽤ docker build 构建完整镜像&#xff0c;具体操作如下&#xff1a; 1.环境准备 1.1. 新建⽂件夹 在磁盘某个路径下新建⼀个⽂件夹&#xff0c;⽤处操作 Dockerfi…

13:kotlin类和对象 -- 属性(Properties)

定义属性 类属性可使用var和val定义 class Address {var name: String "Holmes, Sherlock"var street: String "Baker"var city: String "London"var state: String? nullvar zip: String "123456" }属性使用 fun copyAddres…