unity给物体添加可以包裹所有子物体的BoxCollider

代码如下可直接调用

  MeshTool.SpawnCollider(mode);
using UnityEngine;public class MeshTool
{public static Bounds SpawnCollider(Transform target){Vector3 pMax = Vector3.zero;Vector3 pMin = Vector3.zero;Vector3 center = Vector3.zero;Vector3 oldPos = target.transform.position;Quaternion oldQua = target.transform.rotation;Vector3 oldScale = target.transform.localScale;target.transform.position = Vector3.zero;target.transform.rotation = Quaternion.identity;target.transform.localScale = Vector3.one;Bounds bounds = CalcBounds(target, ref pMax, ref pMin, ref center);BoxCollider collider = target.GetComponent<BoxCollider>();if (collider == null){collider = target.gameObject.AddComponent<BoxCollider>();}collider.center = bounds.center;collider.size = bounds.size;target.transform.position = oldPos;target.transform.rotation = oldQua;target.transform.localScale = oldScale;return bounds;}private static Bounds CalcBounds(Transform obj, ref Vector3 pMax, ref Vector3 pMin, ref Vector3 center){Renderer meshRenderer = obj.GetComponent<Renderer>();if (meshRenderer != null){Bounds b = meshRenderer.bounds;pMax = b.max;pMin = b.min;center = b.center;}RecursivelyCalcBounds(obj.transform, ref pMax, ref pMin);CalculateCenter(pMax, pMin, out center, ref pMax, ref pMin);Vector3 size = new Vector3(pMax.x - pMin.x, pMax.y - pMin.y, pMax.z - pMin.z);Bounds bound = new Bounds(center, size);return bound;}private static void CalculateCenter(Vector3 max, Vector3 min, out Vector3 center, ref Vector3 pMax, ref Vector3 pMin){float xc = (pMax.x + pMin.x) / 2f;float yc = (pMax.y + pMin.y) / 2f;float zc = (pMax.z + pMin.z) / 2f;center = new Vector3(xc, yc, zc);}private static void RecursivelyCalcBounds(Transform obj, ref Vector3 pMax, ref Vector3 pMin){if (obj.transform.childCount <= 0){return;}foreach (Transform item in obj){Renderer m = item.GetComponent<Renderer>();if (m != null){Bounds b = m.bounds;if (pMax.Equals(Vector3.zero) && pMin.Equals(Vector3.zero)){pMax = b.max;pMin = b.min;}if (b.max.x > pMax.x){pMax.x = b.max.x;}if (b.max.y > pMax.y){pMax.y = b.max.y;}if (b.max.z > pMax.z){pMax.z = b.max.z;}if (b.min.x < pMin.x){pMin.x = b.min.x;}if (b.min.y < pMin.y){pMin.y = b.min.y;}if (b.min.z < pMin.z){pMin.z = b.min.z;}}RecursivelyCalcBounds(item, ref pMax, ref pMin);}}}

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

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

相关文章

Linux系统编程——进程控制

目录 一&#xff0c;进程创建 1.1 fork回顾 1.2 写时拷贝 1.3 fork用处 1.4 fork调用失败原因 二&#xff0c;进程退出 2.1 进程退出场景 2.2 mainCRTStartup调用 2.3 进程退出码 2.3.1 main函数返回值 2.3.2 strerror ​编辑 2.3.3 命令的退出码 2.4 进程正常退…

【第19章】spring-mvc之全局异常处理

文章目录 前言一、全局异常处理1. 前端2. 后端 二、常见错误页1.增加界面2.web.xml3.异常处理4.效果 总结 前言 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很多人都开启了学习机器学习&#xff0c;本文就介绍了机器学习的基…

go使用redis连接池技术操作redis数据库实例

我们都知道&#xff0c;在程序开发中&#xff0c;网络链接的开销是比较大的&#xff0c; 当我们在链接redis 时&#xff0c;如果是操作一次就执行一次DIal拨号&#xff0c;那性能是很低的&#xff0c;redis的效率瞬间就被你降低了50%&#xff0c; 提速redis使用性能的第一步就是…

CSS-伪类选择器

结构伪类选择器 作用&#xff1a;根据元素的结构关系查找元素 分类&#xff1a; 选择器说明元素名:first-child查找第一个元素元素名:last-child查找最后一个元素元素名:nth-child(N)查找第N名元素 <!DOCTYPE html> <html lang"en"> <head><me…

react框架对Excel文件进行上传和导出

1.首先需要安装xlsx第三方的库库 引入插件 npm install xlsx在react引入 import * as XLSX from xlsx;1&#xff0c;首先设置jsx部分的 以下代码包含有导入excel文件和导出excel文件&#xff0c;读着可以根据需要&#xff0c;自己选择想要实现的功能 代码如下&#xff0…

动态代理(JDK、Cglib、Bytebuddy)

文章目录 动态代理JDK动态代理代理对象的生成动态代理执行流程简化代码静态代理 Cglib动态代理代理类的生成动态代理执行流程 bytebuddy常用api生成一个类对实例方法进行插桩实例方法进行插桩的扩展三种增强方式插入新方法方法委托动态修改入参对构造方法进行插桩对静态方法进行…

【北京迅为】《iTOP-3588从零搭建ubuntu环境手册》-第3章 Ubuntu20.04系统设置

RK3588是一款低功耗、高性能的处理器&#xff0c;适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用&#xff0c;RK3588支持8K视频编解码&#xff0c;内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

【论文阅读笔记】jTrans(ISSTA 22)

个人博客地址 [ISSTA 22] jTrans&#xff08;个人阅读笔记&#xff09; 论文&#xff1a;《jTrans: Jump-Aware Transformer for Binary Code Similarity》 仓库&#xff1a;https://github.com/vul337/jTrans 提出的问题 二进制代码相似性检测&#xff08;BCSD&#xff0…

2024数维杯数学建模B题完整论文讲解(含每一问python代码+结果+可视化图)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了2024数维杯数学建模挑战赛生物质和煤共热解问题的研究完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 B题论…

跟我学C++中级篇——封装对象的实践

一、对象封装 在面向对象编程中&#xff0c;首要的事情就是如何进行对象的封装。说的直白一些&#xff0c;就是如何设计类或者是结构体。许多开发者看过不少的书&#xff0c;也学过很多的设计方法&#xff0c;更看过很多别人的代码。那么如何指导自己进行对象的封装呢&#xf…

数学学习笔记1——二次函数中的数形结合

二次函数中的数形结合 一、解一元二次不等式 基本方法&#xff1a;配方。 x 2 − 4 x 3 < 0 → ( x − 2 ) 2 < 1 → ∣ x − 2 ∣ < 1 → 1 < x < 3 x^2-4x3<0\to(x-2)^2<1\to\lvert x-2\rvert<1\to1<x<3 x2−4x3<0→(x−2)2<1→∣x−…

VBA_MF系列技术资料1-605

MF系列VBA技术资料1-605 为了让广大学员在VBA编程中有切实可行的思路及有效的提高自己的编程技巧&#xff0c;我参考大量的资料&#xff0c;并结合自己的经验总结了这份MF系列VBA技术综合资料&#xff0c;而且开放源码&#xff08;MF04除外&#xff09;&#xff0c;其中MF01-0…

具备教学意义的实操(用队列实现栈)

225. 用队列实现栈 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/implement-stack-using-queues/description/ 实现逻辑 一个是先进先出&#xff08;队列&#xff09;&#xff0c;一个是后进先出&#xff08;栈&#xff09; 这里用两个队列导入一下数据…

JS实现递归功能

// 递归函数示例&#xff1a;计算阶乘 function factorial(n) {if (n 0) {return 1;} else {return n * factorial(n - 1);} }// 调用递归函数计算阶乘 const result factorial(5); console.log(result); // 输出 120 在上面的示例中&#xff0c;我们定义了一个递归函数fact…

项目管理 | 如何做好项目管理?

大部分人在做项目管理时会遇到以下问题&#xff1a; 团队沟通不畅&#xff0c;对于项目的各个环节和配合方无法掌控项目的任务分配和跟踪困难&#xff0c;项目进度不透明项目上线进度慢&#xff0c;没有威信难以服众 那项目管理怎么做&#xff1f;这篇就结合简道云团队的经验…

爬虫学习:XPath提取网页数据

目录 一、安装XPath 二、XPath的基础语法 1.选取节点 三、使用XPath匹配数据 1.浏览器审查元素 2.具体实例 四、总结 一、安装XPath 控制台输入指令&#xff1a;pip install lxml 二、XPath的基础语法 XPath是一种在XML文档中查找信息的语言&#xff0c;可以使用它在HTM…

MySQL 数据库中 Insert 语句的锁机制

在数据库系统中&#xff0c;Insert 语句是常用的操作之一&#xff0c;用于向数据库表中插入新的数据记录。然而&#xff0c;当多个会话&#xff08;或者线程&#xff09;同时对同一张表执行 Insert 操作时&#xff0c;可能会引发一些并发控制的问题&#xff0c;特别是涉及到锁的…

数据结构----二叉树

博主主页: 码农派大星. 关注博主带你了解更多数据结构知识 1. 树型结构 1.1 概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上…

【软考】模拟考卷错题本2024-05-11

1 设计模式- 适配器模式 基本上上述的图解已经涵盖了绝大多数主流的设计模式和其特点。理解记忆下即可&#xff0c;这里对下午的考题也有帮助的。 2 计算机组成原理 cpu 访问速度 这个真的是憨憨咯~看到内存就选内存&#xff0c;题目都没审好。这里的速度比cpu内部的要比外部的…

c++ STL 之栈—— stack 详解

vector 是 stl 的一个关联容器,名叫“栈”&#xff0c;何为“栈”&#xff1f;其实就是一个数组&#xff0c;但有了数组何必还需栈&#xff0c;这是一个高深的问题。 一、简介 1. 定义 栈&#xff0c;是一个柔性数组&#xff08;可变长数组&#xff09;&#xff0c;可以变大变小…