Unity之物理系统

专栏的上一篇角色控制器控制角色移动跳崖,这一篇来说说Unity的物理系统。 

 本篇小编还要带大家做一个碰撞检测效果实例,先放效果图:流星撞击地面产生爆炸效果


一、Rigidbody 

我们给胶囊添加了 Rigidbody 组件它才有的重力,我们来看看 Rigidbody组件中的参数。

  • 首先质量不用多说就是代表物体的质量
  • 阻力是物体下落时遇到的空气阻力
  • 角阻力是物体旋转时受到的阻力
  • 使用重力是判断物体单纯的受不受重力影响,重力只是物理特性之一,我们来做个实验:

 创建一个球体、立方体和平面,球体和立方体都挂载  Rigidbody  组件,立方体把  使用重力  取消勾选后运行,用球体去撞立方体。

然后立方体就说:我要当太空人,球体给了我爱吃的大嘴巴子。

立方体就这样飞走了

这就是物体在不受重力影响下的场景,那受重力影响就和我们现实生活差不多在这里就不说了,我们接着往下看:


  • Is Kinematic: 物体是否受到运动学的影响,除了重力,运动学也是物理特性之一。

注:IsKinematic = false 是受到运动学影响,IsKinematic = true 是不受影响

我们来接着实验 :还是立方体和球体,我们让立方体不受运动学影响即勾上  Is Kinematic  选项

立方体说:我不想当太空人了,我要当GTA(侠盗猎车手)里的树,能把我撞倒算你厉害 。

  • 碰撞检测离散的是节省性能、非连续性的检测 ,如果有高速物体产生碰撞,那么有可能检测不到这次碰撞;持续连续动态就是连续性检测但更耗费性能。Continuous Speculative  中间状态,性能低于持续高于离散

 这是我们上个动图的截图

可以看到用离散的碰撞检测在高速下碰撞这次就没有检测到,球体都进到立方体里了。大家有没有想到CF里的卡箱子😃

  •  Constraints  冻结位置、冻结旋转 是控制 X、Y、Z轴局部的不受运动学影响和旋转,当然如果你都勾选上效果就和  Is Kinematic  一样了。

二、碰撞检测的产生与监听

1. 产生碰撞的条件

  • 碰撞的两个物体都要有碰撞组件
  • 两个物体其中的一个有刚体(Rigidbody),没有刚体就不会产生运动也就不会发生碰撞
  • 碰撞检测脚本挂在两个物体的任意一个上都可以

碰撞组件有很多,比如:Mesh Collider网格碰撞器、Box Collider 立方体碰撞器、Terrain Collider 地形碰撞器、Sphere Collider球形碰撞器

比如图中我们挂载球形碰撞器,绿色边框 就是碰撞器的边框,我们也可以调节大小位置等参数

2. 做一个碰撞检测实例

我们先在资源商店导入免费资源:小编今天刚下的,资源还在

我们选择绿色的流星(Magic fire0)和爆炸物 (Explosion)

 

场景描述:流星落到地面上发生碰撞,检测到碰撞后流星销毁产生爆炸物,爆炸完后爆炸物销毁。

 给  流星 Magic fire0 挂载 Sphere Collider球形碰撞器Rigidbody刚体,这是碰撞检测产生的条件之一。

编写FireTest脚本,挂载到流星上用来做碰撞检测:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FireTest : MonoBehaviour
{
        //创建一个爆炸的预设体
        public GameObject Prefab;
        
        // Start is called before the first frame update
        void Start()
        {
            
        }
    
        // Update is called once per frame
        void Update()
        {
            
        }
        
        //监听发生碰撞: 只监听发生碰撞的一瞬间
        private void OnCollisionEnter(Collision collision)  //参数 collision 就是你碰撞到的物体的碰撞信息
        {
           //创建一个爆炸物体
           Instantiate(Prefab, transform.position, Quaternion.identity);   //参数: 预设体,爆炸位置是自身火焰位置,不旋转
           //销毁自身(流星): 流星撞击地面爆炸物产生流星销毁
           Destroy(gameObject);
           
           //获取碰撞到物体看一下参数collision —— 打印一下物体名称,这里打印的是地面的名称
           Debug.Log(collision.gameObject.name);
        }
        
        //持续碰撞中: 只要物体挨着就会执行该方法
        private void OnCollisionStay(Collision collisionInfo)
        {
            
        }
        
        //结束碰撞
        private void OnCollisionExit(Collision other)
        {
            
        }
}

同时把爆炸物预设体挂载到FireTest脚本,就是我们在脚本里写的  Prefab  预设体。 

这里流星撞击地面销毁后爆炸物还没有销毁,我们在编写销毁爆炸物的脚本 ExplosionTest 挂在爆炸物上 :

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ExplosionTest : MonoBehaviour
{
    float timer = 0;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        //如果时间大于一秒就销毁爆炸物
        timer += Time.deltaTime;
        if (timer > 1)
        {
            Destroy(gameObject);
        }
    }
}

运行就是我们本篇开头演示的效果了,好了摸鱼结束下班小编要回家了,拜拜┏(^0^)┛

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux环境搭建FastDFS文件服务器(附带Nginx安装)

本文主要介绍在linux服务器如何搭建FastDFS文件服务器。大概分为9个步骤,由于内容较为繁琐。下面带你入坑! 首先简单介绍一下FastDFS是淘宝资深架构师余庆老师主导开源的一个分布式文件系统,用C语言编写。适应与中小企业,对文件不…

芯片烧写工具

问题描述 最近出了一个机器变砖的问题,一些用户使用的设备,头一天晚上用的好好的,第二天来一上电开机就起不来了。 然后就寄回来,返厂维修。一些是因为部分电子器件坏了,还有一些是文件系统问题,重新升级一…

4、Redis高并发分布式锁实战

引言 在分布式系统中,保证数据的一致性和避免竞争条件是至关重要的。分布式锁是一种常用的机制,而Redis作为一款高性能的内存数据库,提供了简单而强大的分布式锁方案。本文将深入探讨如何利用Redis高并发分布式锁来解决分布式系统中的并发控…

【机器学习300问】8、为什么要设计代价函数(损失函数)?它有什么用?

一、先介绍一下线性回归模型 (1)基本概念理解 文字解释:线性回归模型顾名思义,他处理的回归问题,是监督学习的一种。线性回归模型是一种预测模型,其基础是假设目标值和输入值之间存在线性关系。通过一条最…

[zabbix] zabbix监控其他

一、温习zabbix自定义监控 二、zabbix 自动发现与自动注册 2.1 zabbix 自动发现 //zabbix 自动发现(对于 agent2 是被动模式) zabbix server 主动的去发现所有的客户端,然后将客户端的信息登记在服务端上。 缺点是如果定义的网段中的主机数…

71.网游逆向分析与插件开发-角色数据的获取-修复角色名与等级显示问题

内容参考于:易道云信息技术研究院VIP课 上一个内容:自动化助手UI显示角色数据-CSDN博客 码云地址(ui显示角色数据 分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号:0049452c079867779…

vue3+vite项目构建时报错npm ERR! code EPERMnpm ERR! syscall mkdir...

vscode终端中输入npm create vitelatest vueviteproject1 -- --vue命令后报错 具体报错如下: PS D:\project> npm create vitelatest vueviteproject1 -- --vue >> npm ERR! code EPERM npm ERR! syscall mkdir npm ERR! path D:\node\node_cache\_cac…

【软件测试】前端性能测试工具原理

不同于后端性能测试知识的琐碎、独立,这篇文章为你介绍前端性能测试工具WebPagetest,以一个具体网站为例,和你分析WebPagetest的用法,以及前端性能相关的主要概念与指标。 WebPagetest功能简介 WebPagetest,是前端性…

基于VGG-16的检测并清除杂草

目录 1 简介:检测并清除杂草 1.1 问题描述: 1.2 预期解决方案: 1.3 数据集: 1.4 图像展示: 2 数据预处理 2.1 数据集结构 2.2 部分数据分析 2.3 提取数据集 2.4 数据增强 2.5 构建数据集 3 使用VGG-16识别杂草图片 …

山海鲸:助力企业实现内外数据整合与价值挖掘

作为山海鲸的开发者,我们深知数字化转型对于企业发展的重要性。在不断钻研如何提升山海鲸可视化这款免费产品的实用性同时,也在不断推出各行实用解决方案,本文将介绍山海鲸企业数字化转型发展解决方案,探讨如何通过数据驱动创新&a…

WSL不同版本的Ubuntu更换清华镜像,加速Ubuntu软件下载速度

文章目录 不同版本的Ubuntu使用清华镜像,加速Ubuntu软件下载速度1. 备份源软件配置文件2. 复制镜像源3. 修改软件源配置文件4. 更新软件包列表,升级软件包等内容5. 从仓库中下载其它软件可能存在的问题 不同版本的Ubuntu使用清华镜像,加速Ubu…

Tuxera2024版本正式上线!(免费mac读写磁盘工具)

当您获得一台新 Mac 时,它只能读取 Windows NTFS 格式的 USB 驱动器。要将文件添加、保存或写入您的 Mac,您需要一个附加的 NTFS 驱动程序。Tuxera 的 Microsoft NTFS for Mac 是一款易于使用的软件,可以在 Mac 上打开、编辑、复制、移动或删…

【Dart】=> [03] Dart初体验-基础语法(运算符-算术-赋值-比较-逻辑-

目录 能够使用常用运算符操作数据算术运算符赋值运算符比较运算符逻辑运算符 能够使用常用运算符操作数据 学习内容: 算术运算符赋值运算符比较运算符逻辑运算符 算术运算符 用于实现基本的算术运算 常用算术运算符: 加、减、乘、除、取整、取模、自…

2023.1.15 关于 Redis 持久化 RDB 策略详解

目录 Redis 持久化 Redis 实现持久化的两大策略 RDB 策略 手动触发 save 命令 bgsave 命令 bgsave 命令执行流程 自动触发 rdb 文件 实例演示一 实例演示二 实例演示三 实例演示四 RDB 策略的优缺点 Redis 持久化 什么是持久化? 回答: 将数据存…

纯c实现顺序表 数据结构大全

我们已经知道数组是连续的内存地址,顺序表是由数组为基础的一种数据结构,拥有比数组更多的功能,在概念上属于线性结构,跟链表不同的是,顺序表在物理结构上也是线性的 什么是数据结构? 当我们想要使⽤⼤量使…

【教3妹学编程-算法题】3006. 找出数组中的美丽下标 I

3妹:呜呜,烦死了, 脸上长了一个痘 2哥 : 不要在意这些细节嘛,不用管它,过两天自然不就好了。 3妹:切,你不懂,影响这两天的心情哇。 2哥 : 我看你是不急着找工作了啊, 工作…

AI-基于Langchain-Chatchat和chatglm3-6b部署私有本地知识库

目录 参考概述部署安装环境准备原理和流程图一键启动启动WebAPI 服务启动WebUI服务 Docker部署知识库管理常见问题本地知识库怎么微调?回答不准确 参考 手把手教你搭建本地知识库问答AI机器人 LangChain-Chatchat:基于LangChain和ChatGLM2-6B构建本地离…

【小笔记】时序数据分类算法最新小结

2024.1.15 最近基于时序数据训练分类算法,对其进行了一番了解,主要围绕以下几点: 时序数据算法有哪些细分类?时序数据分类算法经典模型?当下时序分类算法模型强baseline?有没有现成的工具? 1…

Python - 深夜数据结构与算法之 位运算

目录 一.引言 二.位运算简介 1.二进制与十进制 2.左/右移 3.位运算 4.异或 XOR 5.指定位置的位运算 6.实战要点 三.经典算法实战 1.Number-1-of-bits [191] 2.Power-Of-Two [231] 3.Reverse-2-Bits [190] 4.N-Queens [51] 四.总结 一.引言 通常情况下我们计数采…

RequestResponse

1.Request 请求 作用:使用Request对象来获取请求数据 1.Request获取请求数据的方法 2.通用方式获取请求参数 3.POST请求参数中文乱码解决 4.请求转发 概念: 一种在服务器内部的资源跳转方式 2.Response 响应 作用:使用response对象设置响应数据 1.Response设置响应数据功能 …