unity学习33:角色相关2,碰撞检测,collider 和 rigidbody,测试一个简单碰撞爆炸效果

目录

1 给gameObject添加rigidbody

2 rigidbody的属性

2.1 基础属性

2.2 插值 详细

2.3 碰撞检测

2.4 constraints 冻结坐标轴的移动和旋转

2.5 layer Overrides

3 碰撞检测 collision Detection

3.1 每个gameObeject上都会创建时自带一个 Collider

3.2 Collider的绿色范围

3.3 两个物体要产生碰撞,至少1个物体需要有 rigidbody

4 用脚本去检测碰撞

4.1 脚本挂载的原则:谁的事情谁做的原则

4.2 脚本1: 挂在子弹上的 TestCollider.cs

4.3 脚本2: 挂在爆炸效果上的 TestColliderPeng.cs

4.4  测试效果

4.4.1 掉落爆炸前

4.4.2 碰撞到plane,发生碰撞,爆炸

4.4.3 爆炸后,爆炸效果自身也消失


1 给gameObject添加rigidbody

  • 给gameObject添加一个新的component:rigidbody 刚体
  • rigidbody 包含很多物理属性
  1. 重力
  2. 可碰撞
  3. 运动符合现实的物理原理

2 rigidbody的属性

2.1 基础属性

  • rigidbody的基础属性
  • mass: 质量
  • drag:垂直的重力方向的阻力
  • Angle drag: 角阻力,旋转阻力
  • use Gravity: 重力
  • is kinematic:  运动特性,不勾选则完全不受物理影响了
  • interpolate: 插值
  • collision Detection : 碰撞检测

2.2 插值 详细

  • none
  • interpolate      //按上一帧做插值
  • extrapolate     //按下一帧做插值

2.3 碰撞检测

碰撞检测

  • 离散的        //节省性能,非连续检测,离散的检测. 高速物体的碰撞检测可能失败
  • 持续的       //地面一般搞成持续监测
  • 连续动态    //子弹一般搞成连续动态
  • 连续           // 处于以上几种的中间

2.4 constraints 冻结坐标轴的移动和旋转

2.5 layer Overrides

3 碰撞检测 collision Detection

可进行碰撞检测的componenet

  • rigidbody
  • mesh Collider

3.1 每个gameObeject上都会创建时自带一个 Collider

不同的gameObeject都有不同的Collider

  • mesh Collider
  • sphere Collider
  • 。。。

3.2 Collider的绿色范围

  • 比如,创建一个球体,默认半径时0.5。 和gameObject是合一的
  1. 这个 collider,可以通过,修改其 x,y,z 坐标,
  2. 可以修改radius半径,使其扩大,
  • 可以把Collider 分离在外面,看的更清晰
  • 但是一般不需要这么干
  • 因为如果这么干,实际发生碰撞的是这个 Collider ,会和看到的不一致

3.3 两个物体要产生碰撞,至少1个物体需要有 rigidbody

  • 两个物体要产生碰撞,需要这几个条件
  1. 每个物体都需要有 collider
  2. 至少1个物体需要有 rigidbody


 

4 用脚本去检测碰撞

准备工作

  • 建1个子弹,黄色圆球
  • 建1个爆炸效果,黄色平面
  • 模拟爆炸过程

4.1 脚本挂载的原则:谁的事情谁做的原则

  • 谁的事情谁来做,代码挂在谁身上
  • 不要都写在一个脚本里
  • 比如 碰撞,则脚本挂在 地面上也可以,挂在物体上也可以

爆炸消失

  • 爆炸消失这个脚本,不适合挂在火焰本身上,而是挂在后续的爆炸上
  • 新建脚本,爆炸脚本写在爆炸效果上,

4.2 脚本1: 挂在子弹上的 TestCollider.cs

  • TestCollider.cs 挂在子弹上
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TestCollider : MonoBehaviour
{//创建一个prefabpublic GameObject Prefab;// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){}//监听发生碰撞private void OnCollisionEnter(Collision collision){// 创建一个爆炸物体Instantiate(Prefab,transform.position,Quaternion.identity);//销毁自身Destroy(gameObject);//获取碰撞到的物体Debug.Log(collision.gameObject.name);}//监听碰撞持续private void OnCollisionStay(Collision collision){}//监听碰撞结束private void OnCollisionExit(Collision collision){Debug.Log("CollisionExit");}}

4.3 脚本2: 挂在爆炸效果上的 TestColliderPeng.cs

  • TestColliderPeng.cs 挂在爆炸效果上
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TestColliderPeng : MonoBehaviour
{float timer=0;// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){timer=timer+Time.deltaTime;if(timer>1){//销毁自身,gameObject就是自身Destroy(gameObject);}}
}

4.4  测试效果

4.4.1 掉落爆炸前

4.4.2 碰撞到plane,发生碰撞,爆炸

  • 碰撞到plane,发生碰撞,爆炸
  • 爆炸后,黄球自动消失(子弹消失)

4.4.3 爆炸后,爆炸效果自身也消失

爆炸后,爆炸效果自身也消失(爆炸结束)

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

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

相关文章

DeepSeek-V3:开源多模态大模型的突破与未来

目录 引言 一、DeepSeek-V3 的概述 1.1 什么是 DeepSeek-V3? 1.2 DeepSeek-V3 的定位 二、DeepSeek-V3 的核心特性 2.1 多模态能力 2.2 开源与可扩展性 2.3 高性能与高效训练 2.4 多语言支持 2.5 安全与伦理 三、DeepSeek-V3 的技术架构 3.1 模型架构 3…

警告accumulate and all-reduce gradients in fp32 for bfloat16 data type

这条警告信息是关于分布式训练中的通信优化策略的,具体涉及流水线并行(Pipeline Parallelism)和点对点通信(P2P Communication)。以下是对这条警告的详细解释: ### **警告内容** WARNING: Setting args.o…

【生成模型之十四】Visual Autoregressive Modeling

论文:Visual Autoregressive Modeling: Scalable Image Generation via Next-Scale Prediction code:GitHub - FoundationVision/VAR: [NeurIPS 2024 Best Paper][GPT beats diffusion🔥] [scaling laws in visual generation📈]…

硬核技术:小程序能够调用手机的哪些传感器

一、加速度传感器 小程序可以调用手机的加速度传感器来检测设备的运动状态。加速度传感器能够测量设备在三个轴(X、Y、Z)上的加速度变化。通过分析这些数据,小程序可以实现一些功能,如运动检测、步数统计、游戏中的动作感应等。 健…

修剪二叉搜索树(力扣669)

这道题还是比较复杂,在递归上与之前写过的二叉树的题目都有所不同。如果当前递归到的子树的父节点不在范围中,我们根据节点数值的大小选择进行左递归还是右递归。为什么找到了不满足要求的节点之后,还要进行递归呢?因为该不满足要…

活动预告 |【Part 2】Microsoft 安全在线技术公开课:通过扩展检测和响应抵御威胁

课程介绍 通过 Microsoft Learn 免费参加 Microsoft 安全在线技术公开课,掌握创造新机遇所需的技能,加快对 Microsoft Cloud 技术的了解。参加我们举办的“通过扩展检测和响应抵御威胁”技术公开课活动,了解如何更好地在 Microsoft 365 Defen…

【WB 深度学习实验管理】利用 Hugging Face 实现高效的自然语言处理实验跟踪与可视化

本文使用到的 Jupyter Notebook 可在GitHub仓库002文件夹找到,别忘了给仓库点个小心心~~~ https://github.com/LFF8888/FF-Studio-Resources 在自然语言处理领域,使用Hugging Face的Transformers库进行模型训练已经成为主流。然而,随着模型复…

创建一个javaWeb Project

文章目录 前言一、eclipse创建web工程二、web.xmlservlet.xml< mvc:annotation-driven/ > Spring MVC 驱动< context:component - scan >&#xff1a;扫描< bean > ... < /bean >< import > config/beans.xml beans.xmlmybatis.xml 前言 javaWe…

【蓝桥杯—单片机】第十一届省赛真题代码题解题笔记 | 省赛 | 真题 | 代码题 | 刷题 | 笔记

第十一届省赛真题代码部分 前言赛题代码思路笔记竞赛板配置内部振荡器频率设定键盘工作模式跳线扩展方式跳线 建立模板明确设计要求和初始状态显示功能部分数据界面第一部分第二部分第三部分调试时发现的问题 参数设置界面第一部分第二部分和第四部分第三部分和第五部分 按键功…

寒假2.7

题解 web&#xff1a;[HCTF 2018]WarmUp 打开是张表情包 看一下源代码 访问source.php&#xff0c;得到完整代码 代码审计 <?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist ["source">"source.p…

【LeetCode Hot100 动态规划】

动态规划 动态规划五部曲简单动态规划问题爬楼梯打家劫舍 01背包类问题01背包基础二维动态数组一维动态数组分割等和子集 完全背包类问题完全背包基础零钱兑换完全平方数零钱兑换II组合总和IV单词拆分 子序列问题最长递增子序列乘积最大子数组 动态规划五部曲 确定dp数组&…

python康威生命游戏的图形化界面实现

康威生命游戏&#xff08;Conway’s Game of Life&#xff09;是由英国数学家约翰何顿康威&#xff08;John Horton Conway&#xff09;在1970年发明的一款零玩家的细胞自动机模拟游戏。尽管它的名字中有“游戏”&#xff0c;但实际上它并不需要玩家参与操作&#xff0c;而是通…

【数据结构】链表应用-链表重新排序

重新排序 反转链表预期实现思路解题过程code力扣代码核心代码完整代码 总结 删除链表中间节点代码解惑 链表重新排序题目描述解题思路解题过程复杂度代码力扣代码完整代码 反转链表 预期实现 思路 你选用何种方法解题&#xff1f; 我选用了迭代法来反转链表。这是一种经典且高…

使用mockttp库模拟HTTP服务器和客户端进行单元测试

简介 mockttp 是一个用于在 Node.js 中模拟 HTTP 服务器和客户端的库。它可以帮助我们进行单元测试和集成测试&#xff0c;而不需要实际发送 HTTP 请求。 安装 npm install mockttp types/mockttp模拟http服务测试 首先导入并创建一个本地服务器实例 import { getLocal } …

pytest-xdist 进行多进程并发测试!

在软件开发过程中&#xff0c;测试是确保代码质量和可靠性的关键步骤。随着项目规模的扩大和复杂性的增加&#xff0c;测试用例的执行效率变得尤为重要。为了加速测试过程&#xff0c;特别是对于一些可以并行执行的测试用 例&#xff0c;pytest-xdist 提供了一种强大的工具&…

mysql8安装时提示-缺少Microsoft Visual C++ 2019 x64 redistributable

MySQL8.0安装包mysql-8.0.1-winx64进行安装&#xff0c;提示&#xff1a;This application requires Visual Studio 2019 x64Redistributable, Please install the Redistributable then runthis installer again。出现这个错误是因为我们电脑缺少Microsoft Visual C 这个程序&…

基于HTML生成网页有什么优势

在互联网时代&#xff0c;网页是人们获取信息、交流互动的重要窗口&#xff0c;而基于HTML生成网页&#xff0c;是搭建网络大厦的关键。HTML语法简洁直观&#xff0c;标签和属性语义明确&#xff0c;新手也能迅速上手&#xff0c;创建包含基础元素的网页&#xff0c;极大降低了…

【MySQL】深度理解事务的隔离性:全面讲解事务的四种隔离级别

**前言&#xff1a;**上节内容我们主要说了如果没有设置保存点&#xff0c; 也可以回滚&#xff0c;但是只能回滚到事务的开始。直接使用rollback的前提是事务还没有提交。并且如果一个事务被提交了&#xff0c;就不可以回退。同时我们也可以使用savepoint设置回滚点。 可以自己…

项目实战 —— HTTP服务器设计与实现

目录 一&#xff0c;项目介绍 二&#xff0c;背景知识补充 2.1 http特点 2.2 URI&#xff0c;URL&#xff0c;URN 2.3 http请求方法 三&#xff0c;前置功能实现 3.1 日志编写 3.2 封装相关套接字 3.3 http请求结构设计 3.4 http响应结构设计 3.5 http服务器主体逻辑…

Verilog 语法篇 硬件描述语言

Verilog 是一种硬件描述语言&#xff0c;用于设计、模拟和综合数字电路和系统。它主要用于描述 ASIC&#xff08;专用集成电路&#xff09;或 FPGA&#xff08;现场可编程门阵列&#xff09;等硬件设备的结构和行为。 定义与用途&#xff1a; Verilog 是一种硬件描述语言&#…