Unity3d 制作动态Mesh且可以随地面凹凸起伏
适用情景:主角带着光环,光环用一张贴图,要贴在地面上,并且随地面凹凸起伏

//代码
using UnityEngine;
using System.Collections; [RequireComponent(typeof(MeshFilter))]
[RequireComponent(typeof(MeshRenderer))]
public class test : MonoBehaviour {
private MeshFilter mFilter;
private Mesh mMesh; public int QuadNum = 1;
public float QuadLength = 1; // Use this for initialization
void Start () {
mFilter = gameObject.GetComponent<MeshFilter>();
mMesh = new Mesh();
mFilter.sharedMesh = mMesh;
mMesh.MarkDynamic(); var quadNum = QuadNum * 2;
var ptNum = quadNum + 1;
var h_len = QuadNum * QuadLength;
var len = h_len * 2; var vertices = new Vector3[ptNum * ptNum];
var uv = new Vector2[ptNum * ptNum];
var triangle = new int[QuadNum * 2 * QuadNum * 2 * 6]; var offset = new Vector3(-h_len, 0, -h_len); for (int j = 0; j < ptNum; j++)
{
for (int i = 0; i < ptNum; i++)
{
int idx = j*ptNum+i;
uv[idx] = new Vector2(i * 1.0f / ptNum, j * 1.0f / ptNum);
}
} int it = 0;
for (int j = 0; j < quadNum; j++)
{
for (int i = 0; i < quadNum; i++)
{
int quadId = j * quadNum + i;
int p0 = quadId + j;
int p1 = p0 + ptNum;
int p2 = p1 + 1;
int p3 = p0 + 1; triangle[it++] = p0;
triangle[it++] = p1;
triangle[it++] = p2; triangle[it++] = p0;
triangle[it++] = p2;
triangle[it++] = p3;
}
} mMesh.vertices = vertices;
mMesh.uv = uv;
mMesh.triangles = triangle;
} // Update is called once per frame
protected virtual void Update () { var quadNum = QuadNum * 2;
var ptNum = quadNum + 1;
var h_len = QuadNum * QuadLength;
var len = h_len * 2; var vertices = new Vector3[ptNum * ptNum]; var offset = new Vector3(-h_len, 0, -h_len); var ray = new Ray(Vector3.down, Vector3.down);
var hit = new RaycastHit();
for (int j = 0; j < ptNum; j++)
{
for (int i = 0; i < ptNum; i++)
{
int idx = j * ptNum + i;
var pt = new Vector3(i * QuadLength, 0, j * QuadLength); ray.origin = transform.localToWorldMatrix.MultiplyPoint3x4(pt) + new Vector3(0, 10, 0);
if (Physics.Raycast(ray, out hit, 100))
{
pt = transform.worldToLocalMatrix.MultiplyPoint3x4(hit.point);
} vertices[i + j * ptNum] = pt;
}
} mMesh.vertices = vertices; } }
Unity3d 制作动态Mesh且可以随地面凹凸起伏的更多相关文章
- [unity基础教程]Unity3D实现动态载入游戏资源(转)
用Unity3D制作基于web的网络游戏,不可避免的会用到一个技术-资源动态载入.比方想载入一个大场景的资源,不应该在游戏的開始让用户长时间等待全部资源的载入完成.应该优先载入用户附近的场景资源.在游 ...
- Xcode 6制作动态及静态Framework
技术交流新QQ群:414971585 有没有写SDK或者要将一些常用的工具类做成Framework的经历? 你或许自己写脚本完成了这项工作,相信也有很多的人使用 iOS-Universal-Frame ...
- Xcode 6制作动态及静态Framework和各种坑
Xcode 6制作动态及静态Framework http://www.cocoachina.com/ios/20141126/10322.html 有没有写SDK或者要将一些常用的工具类做成Frame ...
- 5.11-5.15javascript制作动态表格
制作动态表格的主要是运用js中表格类的insertRow.insertCell简易添加行和列的代码,不过要注意每行添加的表格是有位置行编号的,每行的编号为rows.length-1,增加的表格内的标签 ...
- 【转】Xcode 6制作动态及静态Framework
http://years.im/Home/Article/detail/id/52.html 创建iOS动态库 新建工程并选择默认Target为Cocoa Touch Framework, 如图: 做 ...
- Xcode + Swift 制作动态原型
转载: Xcode + Swift 制作动态原型 为什么是 Xcode 和 Swift 我们尝试过的动态原型设计工具,Origami, Form, Hype, FramerJS,Pixate 等,但都 ...
- Unity3D 创建动态的立方体图系统
Unity3D 创建动态的立方体图系统 这一篇主要是利用上一篇的Shader,通过脚本来完成一个动态的立方体图变化系统. 准备工作如下: 创建一个新的场景.一个球体.提供给场景一个平行光,准备2个立方 ...
- xCode6制作动态及静态Framework(转)
原文:http://years.im/Home/Article/detail/id/52.html 相关推荐:http://www.cocoachina.com/ios/20150127/11022. ...
- GCC制作动态库导出符号表【转】
转自:https://blog.csdn.net/whb_fei/article/details/76974543 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...
随机推荐
- Page传回页面的值问题
- STM32向量表详细分析
预备知识: DCD指令:用于分配一片连续的字存储单元(32bit),并将表达式的值初始化给该字存储单元,类似于C中定义数组并初始化.比如: DCD 0 的意思是:分配一个字存储单元,并将该单元初始化为 ...
- Linux内核循环链表经典分析和移植
为什么说这个链表做的经典呢,哥哥我从Linux内核里边儿扣出来的,要么怎么说内核不是一般人能写的,这代码太TM优美了! 这里有一篇参考文章:http://isis.poly.edu/kulesh/st ...
- java web
1,当访问完一个网页的时候,浏览器会有缓存,当你再次输入原来的网站是会有从远端传来的网页缓存,所以在测试的时候要清除缓存才行
- 江湖救急:webbrowser中js文件丢失问题~
页面中,有一个按钮,点击按钮通过js create 了一个 script标签 ,链接加载一个外部js文件,执行该js文件 $("#a").click(function(){ $.g ...
- 在hexo静态博客中利用d3-cloud来展现标签云
效果: http://lucyhao.com/tags/ hexo自带的tag cloud的标签展现不太美观,想能够展现出“云”效果的标签.在网上找到了d3-cloud这个项目,github地址:ht ...
- WebApi常见4xx错误总结!!!
iis 7上发布mvc报错:403.14-Forbidden Web 服务器被配置为不列出此目录的内容 折腾了半天,提示里面的解决方法是: 如果不希望启用目录浏览,请确保配置了默认文档并且该文件存在. ...
- A funny story in regard to a linux newbie
ZZ from here : ask what kernel ring buffer is A few days ago I started thinking that my linux educa ...
- Android中设定背景图片平铺。
注:本文由Colin撰写,版权所有!转载请注明原文地址,谢谢合作! 在做Android开发时,我们常常需要为程序设定一个背景,但由于现在的Android设备尺寸不一,如果随便设置一个图片为背景,那么很 ...
- nyoj 14 会场安排问题(贪心专题)java
会场安排问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办.小刘的工 ...