unity3d 发布后动态修改地形高度源码
2015-12-03 15:01
351 查看
//tOdO: if (m_TerrainData == null) { m_Terrain= FindObjectOfType<Terrain>(); m_TerrainData =m_Terrain.terrainData; } else { //FindObjectOfType<Terrain>().SampleHeight(new Vector3(h.point.x, h.point.y + 0.1f, h.point.z)); Vector3 terrainLocalPos = h.point-m_Terrain.transform.position; Vector2 controlPos = new Vector2(terrainLocalPos.x / m_TerrainData.size.x * m_TerrainData.heightmapWidth, terrainLocalPos.z / m_TerrainData.size.z * m_TerrainData.heightmapHeight); float addHeight = 1.0f; float oldHeight = m_TerrainData.GetHeight((int)controlPos.x, (int)controlPos.y); float[,] newHeightData = new float[16, 16]; //new float[1, 1] { { (oldHeight + addHeight) / m_TerrainData.heightmapScale.y } }; for (int i = 0; i < 16; i++) { for (int j = 0; j < 16; j++) { newHeightData[i, j] = (oldHeight + addHeight) / m_TerrainData.heightmapScale.y; } } m_TerrainData.SetHeights((int)controlPos.x, (int)controlPos.y, newHeightData); // //float[,] oldHeightData = terrainData.GetHeights((int)controlPos.x, (int)controlPos.y, 1, 1); //float[,] newHeightData = new float[1, 1] { { addHeight / terrainData.heightmapScale.y + oldHeightData[0, 0] } }; //terrainData.SetHeights((int)controlPos.x, (int)controlPos.y, newHeightData); }
相关文章推荐
- Unity 通过 www 下载 assetbundle , 在 iOS9 设备无法下载的问题
- unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)
- Unity性能优化-总篇
- Unity5的uGUI中实现文字渐变效果(Gradient)
- Unity实现一个morpher/blendShape
- [shader]Unity3D地形
- 通过Scroll View实现简易背包的滑动效果
- win8.1 unity静默调用打印机
- unity 球体表面平均分割点
- unity 球体表面平均分割点
- unity基础概念
- unity3d脚本控制骨骼旋转
- Unity手游之路<十三>手游代码更新策略探讨
- Unity手游之路<十二>手游资源热更新策略探讨
- Unity手游之路<十一>资源打包Assetbundle
- Unity 行为树 Behavior Designer
- Unity下SpriteSheet 使用
- unity3d5.2.3中 调整视角
- Unity3d 手游之旅
- 【Unity3D ugui】UI特效的位置自适应及调整层次关系的一种解决方案