Unity3D 动态改变地形
直接获取TerrainData进行修改即可
using System.Collections; using UnityEngine; using UnityEditor;public class DynamicCreateTerrain : MonoBehaviour {public TerrainData terrainData;private float[,] heightsBackups;void Start(){//var terrain = CreateTerrain(); ModifyTerrainDataHeight(terrainData);// 5秒后恢复地形 StartCoroutine(Disable());}// 动态创建地形public Terrain CreateTerrain(){TerrainData terrainData = new TerrainData();terrainData.heightmapResolution = 513;terrainData.baseMapResolution = 513;terrainData.size = new Vector3(50, 50, 50);terrainData.alphamapResolution = 512;terrainData.SetDetailResolution(32, 8);GameObject obj = Terrain.CreateTerrainGameObject(terrainData);AssetDatabase.CreateAsset(terrainData, "Assets/Terrain_ModifyHeight.asset");AssetDatabase.SaveAssets();return obj.GetComponent<Terrain>();}// 动态改变地形public void ModifyTerrainDataHeight(TerrainData terrainData){int width = terrainData.heightmapWidth;int height = terrainData.heightmapHeight;float[,] array = new float[width, height];print("width:" + width + " height:" + height);for (int i = 0; i < width; i++)for (int j = 0; j < height; j++){float f1 = i;float f2 = width;float f3 = j;float f4 = height;float baseV = (f1 / f2 + f3 / f4) / 2 * 1;array[i, j] = baseV * baseV;}// 备份高度图heightsBackups = terrainData.GetHeights(0, 0, width, height);// 设置高度图terrainData.SetHeights(0, 0, array);}IEnumerator Disable(){yield return new WaitForSeconds(5);Debug.Log("Recove Terrain.");terrainData.SetHeights(0, 0, heightsBackups);} }
需要注意的是,如果是在Editor模式下, 这样操作会直接修改TerrainData的数据,需要注意备份,不过打包完就没事,不会再被修改了。
这种做法可以动态改变地形,用来实现一些例如挖洞等的效果。
动态改变地形的插件:
https://www.assetstore.unity3d.com/cn/#!/content/65795
转载于:https://www.cnblogs.com/jeason1997/p/5776594.html
Unity3D 动态改变地形相关推荐
- Unity3d 动态字体
https://www.xuebuyuan.com/2147872.html Unity3d 动态字体 2014年09月05日 ⁄ 综合 ⁄ 共 2101字 ⁄ 字号 小 中 大 ⁄ 评论关闭 目前测 ...
- Unity3D动态修改RectTransform
Unity3D动态修改RectTransform 改变RectTransform的width,height GetComponent<RectTransform>().rect.width ...
- Unity3D动态创建地形网格(一)
Unity3D动态创建地形网格(一) 这次简单的写一个动态创建地形网格的脚本给大家分享一下. 这次是第一部分,仅仅实现了通过高度图动态生成地形的部分.假如以后有心情和时间,再来慢慢的补充多通道刷地形材 ...
- 关于Unity3D动态生成连续性网格几何体总结【第三部分】(贴图篇)
关于Unity3D动态生成连续性网格几何体总结[第三部分](贴图篇) 文章目录 关于Unity3D动态生成连续性网格几何体总结[第三部分](贴图篇) 前言 一.动态建立UV值 二.贴图的平铺与拉伸 二 ...
- (转)Unity3d使用心得(2):Unity3d 动态下载动画资源——AnimationClip 的使用
引言: 在使用 Unity3d 开发微端.或者网页游戏的时候经常需要将资源打包成 AssetBundle ,然后通过 www 的方式动态的下载资源.今天要分享的是我再动态下载 Animation 骨骼 ...
- unity3d 动态合批设置_【CocosCreator】突破动态合图
1. 动态合图的默认规则 引擎中对动态合图的描述如下: 它能在项目运行时动态的将贴图合并到一张大贴图中.当渲染一张贴图的时候,动态合图系统会自动检测这张贴图是否已经被合并到了图集(图片集合)中,如果没 ...
- Unity3D 动态加载资源方式
在Unity3d游戏开发中,我们经常需要频繁创建物体,而其中的资源读取就是个问题.其中Unity为我们资源读取提供了几种基本方法,总的来说分为从内部读取和从外部读取. 1.Resources.Load ...
- unity3d 动态合批设置_Unity动态合批(Dynamic Batching)与静态合批(Static Batching)
动态合批与静态合批其本质是对将多次绘制请求,在允许的条件下进行合并处理,减少cpu对gpu绘制请求的次数,达到提高性能的目的. 1.静态合批是将静态(不移动)GameObjects组合成大网格,然后进 ...
- Unity3D 动态加载CAD模型 最后总结
相关技术文档下载:网盘技术宣传文档 请大家先看过文档之后再来咨询 我不是销售而是技术人员 FQA 能不能直接转换? 不能!不能!不能!重要的事情说三遍!需要转中间格式(svz,公司自有) 中间格式那么 ...
- Unity3D 动态加载 图片序列正反播放
参考来源 跟来源的电子图书翻页多了点细节上的变化. using UnityEngine; using System.Collections; using System.Resources;public ...
最新文章
- 手把手教你用Kaggle开启机器学习之旅(附资源链接)
- 转: 学ppt的网址与素材
- linux命令之less命令
- xgboost与gbdt的区别
- JavaScript高程第十章:DOM(上)
- 计算机快捷键m是什么,教程方法;m、ac快捷键电脑技巧-琪琪词资源网
- mysql8.1改密码,mysql 8.0以上版本修改root密码的方法
- Java Lombok详解
- GO分析和KEGG分析都是啥?
- 什么是深度可分离卷积及深度可分离卷积的优势
- 大数据技术的概论(2)
- STM32CubeMX 下载和安装 详细教程
- jetty服务器使用jersey作为Restful框架
- python运势预测程序_基于Python的星座运势接口调用代码实例
- Words Five
- webstorm 重新下载破解版插件后打不开了?
- 二分图的最小顶点覆盖 和 最大独立集 和 最大团
- 如何最快的让Google收录你的网站!(转)
- 菜鸟必看 揭开系统资源的神秘面纱
- 深大uooc学术道德与学术规范教育第八章