void Start()
{
Test4();
} //草
private Vector3[] grassArray = new Vector3[7];
private GameObject grassobj;
void Test4()
{
GameObject obj = new GameObject();
obj.name = "grass";
grassobj = obj;
MeshFilter meshFilter = obj.AddComponent<MeshFilter>();
//mesh的顶点,按照图的我们顺时针写就行
Vector3[] newVertices =
{
new Vector3(0, 0, 0), new Vector3(0 ,1 ,0) , new Vector3(0, 2, 0), new Vector3(0, 3, 0),
new Vector3(0.3f, 2 ,0 ), new Vector3(0.6f, 1 , 0), new Vector3(0.9f, 0 ,0)
};
grassArray = newVertices;
//uV坐标,照抄上面的,去除z
Vector2[] newUV =
{
new Vector2(0, 0), new Vector2(0, 1), new Vector2(0, 2), new Vector2(0, 3),
new Vector2(0.3f, 2), new Vector2(0.6f, 1), new Vector2(0.9f,0)
};
int[] newTriangles =
{
2,3,4,1,2,4,1,4,5,0,1,5,0,5,6,//顺时针渲染正面
2,4,3,1,4,2,1,5,4,0,5,1,0,6,5//逆时针渲染背面
};
Mesh mesh = new Mesh();
meshFilter.mesh = mesh;
//顶点 三角面 uv
mesh.vertices = grassArray;
mesh.uv = newUV;
mesh.triangles = newTriangles;
//渲染
MeshRenderer renderer = obj.AddComponent<MeshRenderer>();
Material mat = new Material (Shader.Find("Standard"));
mat.color = Color.green;
renderer.material = mat;
} public float wind;
Vector3[] baseVertices =
{
new Vector3(0, 0, 0), new Vector3(0 ,1 ,0) , new Vector3(0, 2, 0), new Vector3(0, 3, 0),
new Vector3(0.3f, 2 ,0 ), new Vector3(0.6f, 1 , 0), new Vector3(0.9f, 0 ,0)
};
// Update is called once per frame
void Update()
{
//模拟草被风影响
//顶点高度越高的草越容易被影响
wind = Mathf.Sin(Time.time);//sin波
for (int i = 0; i < grassArray.Length; i++)
{
if (grassArray[i].y == 3)
{
//高度为3的草
grassArray[i].x = baseVertices[i].x + (wind * baseVertices[i].y * 0.2f);
}
else if (grassArray[i].y == 2)
{
//高度为2的草
grassArray[i].x = baseVertices[i].x + (wind * baseVertices[i].y * 0.15f);
}
else if (grassArray[i].y == 1)
{
//高度为1的草
grassArray[i].x = baseVertices[i].x + (wind * baseVertices[i].y * 0.1f);
}
} grassobj.GetComponent<MeshFilter>().mesh.vertices = grassArray;
}

  

通过代码创建的草的mesh

y轴单位是1

0到6的距离是0.9

一棵草左右摇摆

写法比较粗糙,后面再研究下更好的写法

unity代码创建草和模拟风的效果的更多相关文章

  1. C#自定义事件模拟风吹草摇摆

    这是一个自定义事件的例子.C#.WinForm.Visual Studio 2017.在HoverTreeForm中画一块草地,上面有许多草(模拟).HewenqiTianyi类模拟天气,会引发“风” ...

  2. 代码本色 用编程模拟自然系统 (Daniel Shiffman 著)

    https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.7/p5.js http://www.box2d.org http://www.jbox2d.org ...

  3. 在Unity中创建VR游戏

    添加VR插件为了为您选择的平台创建VR游戏,我们需要下载几个插件.出于本教程的目的,我将向您展示如何上传到Android平台.要上传到iOS,您需要下载 Xcode. 现在让我们下载Unity的Goo ...

  4. 在Unity中创建可远程加载的.unity3d包

    在一个Unity项目中,发布包本身不一定要包括所有的Asset(译为资产或组件),其它的部分可以单独发布为.unity3d,再由程序从本地/远程加载执行,这部分不在本文讨论范围.虽然Unity并没有直 ...

  5. Unity 代码编译成dll 更新dll实现热更代码

    Unity 代码编译成dll 更新dll实现热更代码 实现流程 代码编译成DLL DLL打包成AssetBundle 加载AssetBundle 加载代码程序集 获取指定类 使用反射赋值 C#代码编译 ...

  6. 在Unity中创建攻击Slot系统

    http://www.manew.com/thread-109310-1-1.html 马上注册,结交更多好友,享用更多功能,让你轻松玩转社区. 您需要 登录 才可以下载或查看,没有帐号?注册帐号  ...

  7. 【Android】纯代码创建页面布局(含异步加载图片)

    开发环境:macOS 10.12 + Android Studio 2.2,MinSDK Android 5.1 先看看总体效果 本示例是基于Fragment进行的,直接上代码: [界面结构] 在 F ...

  8. ios-将代码创建的视图控件放入拖拽控件的下面

    如图所示 图片是拖拽上去的imageView,橘黄色控件是在代码中创建的添加上去的,此时黄色view在imageView 上方 调用方法bringSubviewToFront:试图将imageView ...

  9. 代码创建数据库_表--SqlServer数据库

    /*1.创建数据库的时候需要设置的基本属性: 数据库名称 逻辑名称 初始大小 文件增长 路径*/ --语法: -- create database 数据库名称 -- on [primary]--创建数 ...

随机推荐

  1. nginx停止

  2. C#递归例程

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...

  3. API Test Postman接口测试之高级篇2

    API Test  Postman接口测试之高级篇2 一.继承父类的设置: 二.导出及导入: 三.分享文档: 四.发布接口文档: 五.常用脚本: 右边框选的是一些常用的脚本,postman提供的,可以 ...

  4. 总结常见的违背Rest原则的接口设计做法

    此文已由作者郑华斌授权网易云社区发布. REST这词我们常常挂在嘴边,比如"开发一个rest接口",又比如Spring项目的代码: @RestControllerpublic cl ...

  5. linux 动态库加载路径修改

    1.在 /etc/ld.so.conf 文件中添加搜索路径,重启或者 ldconfig 生效: 2.在 /etc/ld.so.conf.d 目录下添加 *.conf 文件,其中可以添加搜索路径,重启获 ...

  6. Python 错误和异常小结

    1.Python异常类 Python是面向对象语言,所以程序抛出的异常也是类.常见的Python异常有以下几个,大家只要大致扫一眼,有个映像,等到编程的时候,相信大家肯定会不只一次跟他们照面(除非你不 ...

  7. SQL语句优化 (一) (52)

    优化SQL语句的一般步骤 1 通过show status命令了解各种SQL的执行频率. 格式:mysql> show [session|global]status; 其中:session(默认) ...

  8. netcat 工具传输文件

    因为电脑本地是 windows,多台机器间以 windows 为中介传输文件极度不爽.window 下的 MobaXterm 工具不能使用 sz 和 rz 命令, 而 SecureCRT 工具使用体验 ...

  9. 【文文殿下】[BZOJ3277] 串

    Description 字符串是oi界常考的问题.现在给定你n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中 至少k个字符串的子串(注意包括本身) Input 第一行两个整数n,k ...

  10. mxonline实战-1,创建应用及相应模型

        前言   环境说明:python3.5 + django2.0, 用的pycharm4.04专业版 课程视频地址 https://coding.imooc.com/learn/list/78. ...