Unity 手动拆分和组装模型
第一次写博客,不足之处还望前辈指点:
项目需求是需要用Unity制作船舰模型的爆炸图效果。我的思路是先把船舰上各个单元组件的位置记录下来,然后依次移动这些单元组件的位置,在复原该模型时,再把原来记录的单元组成模型位置还原出来。
首先,在Hierarchy面板新建一个GameObject,创建4个Sphere和一个Cube用来搭建一个小车模型((#^.^#)我家小车是球形轱辘哦);
第一步在Assets文件夹下面创建一个Scripts,然后添加一个DateVO和PartVO脚本
using UnityEngine; using System.Collections;[System.Serializable] public class PartVO {public Vector3 pos;public Vector3 rot;public Vector3 scale; }
第二步创建拖拽脚本Drag
using UnityEngine; using System.Collections; public class Drag : MonoBehaviour { private IEnumerator OnMouseDown() { Vector3 pos = Camera.main.WorldToScreenPoint(transform.position); Vector3 offset = transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y,pos.z)); while (Input.GetMouseButton(0)) { transform.position = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, pos.z))+offset; yield return new WaitForFijiaoxedUpdate(); } }}
第三步创建复原脚本ReaetPart
using UnityEngine; using System.Collections; using System; using System.IO;public class ResetPart : MonoBehaviour {string path;string s;GameObject part;// Use this for initializationvoid Start (){part = GameObject.Find("Part");path = Application.dataPath + "/PartMessage.json";} // Update is called once per framevoid Update () {if (Input.GetMouseButtonDown(1)){Reset();}}private void Reset(){if (!File.Exists(path)){throw new Exception("找不到当前的路径");}s = File.ReadAllText(path);DateVO date = JsonUtility.FromJson<datevo>(s);for(int i = 0; i < part.transform.childCount; i++){part.transform.GetChild(i).localPosition = date.parts[i].pos;part.transform.GetChild(i).localEulerAngles = date.parts[i].rot;part.transform.GetChild(i).localScale = date.parts[i].scale;}} }
最后我写了一个JSON存模型单元组件位置的脚本PartCreateMessage
using UnityEngine; using System.Collections; using System.IO; using UnityEditor;public class PartCreateMessage : MonoBehaviour {[MenuItem("Tools/CreateJSON")]static void WriteJson(){string path = Application.dataPath + "/PartMessage.json";GameObject obj = Selection.activeGameObject;if (obj.name != "Part"){throw new System.Exception("Selection Model");}DateVO date = new DateVO();for(int i = 0; i < obj.transform.childCount; i++){PartVO part = new PartVO();part.pos = obj.transform.GetChild(i).localPosition;part.rot = obj.transform.GetChild(i).localEulerAngles;part.scale = obj.transform.GetChild(i).localScale;date.parts.Add(part);}string s = JsonUtility.ToJson(date);File.WriteAllText(path,s);AssetDatabase.Refresh();} }
Unity 手动拆分和组装模型相关推荐
- Science Bulletin:上海植生所王二涛组发表基于绝对丰度的植物根际微生物群落“扩增-选择”组装模型
文章目录 Science Bulletin: 基于绝对丰度的植物根际微生物群落"扩增-选择"组装模型 背景介绍 研究方法 结果与讨论 作者简介 王二涛 于楠 张学斌 王孝林 Ref ...
- UNITY 手动定制inspector
UNITY 手动定制inspector using System.Collections; using System.Collections.Generic; using UnityEngine; u ...
- java字符串替换 数组,Java工具类-拆分字符串组装数组,替换字符
Java工具类--拆分字符串组装数组,替换字符 >>>>>>>>>>>>>>>>>>> ...
- 详解Unity中的导入3D模型
前言 三维模型可以表示任何现实世界中存在的物体,自然也可以表示任何游戏世界中存在的物体,比如地面,山川河流,花草树木,建筑,人物,都需要使用三维模型来表示.一般我们使用一些建模软件来建出游戏中需要的模 ...
- Unity抗锯齿,Unity3D模型花闪烁等效果优化。
Unity抗锯齿,Unity3D模型花闪烁等效果优化. 最近在做全息投影项目,模型闪烁,锯齿明显,自己总结了一些优化方法. 方法一:在场景内摄像机上挂载如下抗锯齿脚本.摄像机改为Skybox或者Sol ...
- Unity动态加载3D模型
Unity动态加载3D模型 在Unity中创建游戏对象的方法有 3 种: 第一种是将物体模型资源由 Project 视图直接拖曳到 Hierarchy 面板中: 第二种是在 Unity 3D 菜单 G ...
- access数据库拆分的用途_手动拆分 Access 数据库 | Microsoft Docs
如何在 Microsoft Access 中手动拆分 Access 数据库 2020/5/22 适用于: Access 2007, Access 2003, Access 2002 本文内容 备注 O ...
- 3DMax切割、拆分(分离模型)
3DMax切割.拆分(分离模型) 选中模型:选择边: 选择切割位置: 右键连接: 选择分离部分: 点击分离:命名保存 完成: 完整演示 选中模型:选择边: 选择切割位置: 右键连接: 选择分离部分: ...
- Unity 手动编译 Reload脚本 减少等待时间
Unity 手动编译 Reload 脚本 这是个自定义reload domain工具,加快工作流,减少等待.测试版本是Unity2021,理论上来说2020以上都可. 脚本地址:UnityManual ...
最新文章
- 使用pytorch构建图片分类器
- Spring Boot 2.0 热部署指南
- MYSQL远程连接数据库
- STM32开发 -- CRC校验码
- Hook API (C++)
- tomcat jsp导入java_[导入]Tomcat JSP Web 开发中的乱码问题小姐
- python并发编程之多线程
- Scrapy-Link Extractors(链接提取器)
- 从零开始学ios开发(十四):Navigation Controllers and Table Views(上)
- go - const
- AntD Pro Footer自定义
- 服务器2003如何修复0,Windows Server 2003 SP2补丁无法安装解决方法(密钥无效)
- html保留数据库文本格式,以html格式显示数据库中的格式化文本(FLASK应用程序)...
- WHQL认证资讯:关于Windows硬件开发者仪表盘
- JVM: GC过程总结(minor GC 和 Full GC)
- mantis的安装配置(for windows)
- Anaconda配置新环境
- python numpy读取数据_Python numpy数据的保存和读取
- 【万能搜索】万能DFS之全排列(一)——普通算法
- 泉州数字平台让城市管理更“智慧” 数分钟“搞掂”