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 ...
随机推荐
- 【好玩】将js代码转为日式表情
直接上网址:http://utf-8.jp/public/aaencode.html?src=hello 试试将下面代码执行一下吧: ゚ω゚ノ= /`m´)ノ ~┻━┻ //*´∇`*/ ['_']; ...
- iOS9 适配
iOS适配的相关内容的整理 之前iOS开发者一直很庆幸自己不用像安卓开发者那样适配各种不同类型的机型,但如今随着iPhone各种机型的改变,适配也成了我们开发中必须会的内容了.首先我们来了解一下对于不 ...
- vtk第一个程序
首先 设置环境变量 解决方案资源管理器 选中项目名字 而不是ALL_BUILD 选项卡 项目-属性 右侧 附加依赖项->编辑 kernel32.libuser32.libgdi32.libwin ...
- 解析posix与perl标准的正则表达式区别 ---PHP
正则表达式(Regular Expression,缩写为regexp,regex或regxp),又称正规表达式.正规表示式或常规表达式或正规化表示法或正规表示法,是指一个用 来描述或者匹配一系 ...
- mysql sql语句执行时间查询
第一种:show profiles 之类的语句来查看 1.查一下profile是不是打开了,默认是不打开的. mysql> show profiles; Empty set (0.02 sec) ...
- 微信小程序开放公测了 晚上又可以通宵搞代码了
就在刚刚22:15分,微信公众平台的服务号发来好消息说小程序开放公测了,喜大普奔啊!!!码农们晚上又可以通宵搞测试了.之前还猜测16日微信小论坛小程序专场上会公布,没想到提前了那么多天,效率挺高的,而 ...
- 【PHP面向对象(OOP)编程入门教程】3.什么是面向对象编程呢?
就不说他的概念,如果你想建立一个电脑教室,首先要有一个房间, 房间里面要有N台电脑,有N个桌子, N个椅子, 白板, 投影机等等,这些是什么,刚才咱们说了, 这就是对象,能看到的一个个的实体,可以说这 ...
- 使用Carthage安装第三方Swift库
http://blog.crazyphper.com/?p=3661 carthage update
- Mac Mini中添加VNC访问
开启Mac Mini上面的VNC. 1) 打开“系统偏好设置”(System Preference),双击打开“共享”(Sharing)项. 2)在左侧将“屏幕共享”(Screen sharing) ...
- mybaitis uuid插入和定义返回类型