unity代码创建草和模拟风的效果
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代码创建草和模拟风的效果的更多相关文章
- C#自定义事件模拟风吹草摇摆
这是一个自定义事件的例子.C#.WinForm.Visual Studio 2017.在HoverTreeForm中画一块草地,上面有许多草(模拟).HewenqiTianyi类模拟天气,会引发“风” ...
- 代码本色 用编程模拟自然系统 (Daniel Shiffman 著)
https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.7/p5.js http://www.box2d.org http://www.jbox2d.org ...
- 在Unity中创建VR游戏
添加VR插件为了为您选择的平台创建VR游戏,我们需要下载几个插件.出于本教程的目的,我将向您展示如何上传到Android平台.要上传到iOS,您需要下载 Xcode. 现在让我们下载Unity的Goo ...
- 在Unity中创建可远程加载的.unity3d包
在一个Unity项目中,发布包本身不一定要包括所有的Asset(译为资产或组件),其它的部分可以单独发布为.unity3d,再由程序从本地/远程加载执行,这部分不在本文讨论范围.虽然Unity并没有直 ...
- Unity 代码编译成dll 更新dll实现热更代码
Unity 代码编译成dll 更新dll实现热更代码 实现流程 代码编译成DLL DLL打包成AssetBundle 加载AssetBundle 加载代码程序集 获取指定类 使用反射赋值 C#代码编译 ...
- 在Unity中创建攻击Slot系统
http://www.manew.com/thread-109310-1-1.html 马上注册,结交更多好友,享用更多功能,让你轻松玩转社区. 您需要 登录 才可以下载或查看,没有帐号?注册帐号 ...
- 【Android】纯代码创建页面布局(含异步加载图片)
开发环境:macOS 10.12 + Android Studio 2.2,MinSDK Android 5.1 先看看总体效果 本示例是基于Fragment进行的,直接上代码: [界面结构] 在 F ...
- ios-将代码创建的视图控件放入拖拽控件的下面
如图所示 图片是拖拽上去的imageView,橘黄色控件是在代码中创建的添加上去的,此时黄色view在imageView 上方 调用方法bringSubviewToFront:试图将imageView ...
- 代码创建数据库_表--SqlServer数据库
/*1.创建数据库的时候需要设置的基本属性: 数据库名称 逻辑名称 初始大小 文件增长 路径*/ --语法: -- create database 数据库名称 -- on [primary]--创建数 ...
随机推荐
- [leetcode] 6. Balanced Binary Tree
这个题目纠结了一会儿,终于从二叉树转化到AVL了.题目如下: Given a binary tree, determine if it is height-balanced. For this pro ...
- ASP.NET Core2读写InfluxDB时序数据库
在我们很多应用中会遇到有一种基于一系列时间的数据需要处理,通过时间的顺序可以将这些数据点连成线,再通过数据统计后可以做成多纬度的报表,也可通过机器学习来实现数据的预测告警.而时序数据库就是用于存放管理 ...
- python将json转csv
现有一个需求要将json转成excel,使用python将其转为csv格式,使用excel打开即可. import json import csv import codecs f = open('te ...
- 创建jdk8基础镜像
https://blog.csdn.net/qq_35981283/article/details/80738451
- C++并发多线程(一)
并发:两个或者更多的任务同时发生,一个程序同时执行多个独立的任务. 以往计算机 单核CPU 某一个时刻只能执行一个任务 由操作系统调度 每秒钟进行多次所谓的任务切换并发的假象(不是真正的并发),这种切 ...
- WPF 平板上按钮点击不触发,鼠标点击触发的两种解决方法
今天运行在windows平板上的程序,有个功能是弹出子窗体,点弹出窗体的关闭按钮,要点好几次才能触发.网上找了找,也有人与我类似的情形. 解决方法如下: public static void Disa ...
- 【OCP题库】最新CUUG OCP 12c 071考试题库(66题)
66.(22-19)choose two Examine the structure proposed for the TRANSACTIONS table: Which two statements ...
- 【Oracle 12c】CUUG OCP认证071考试原题解析(35)
35.choose the best answer View the Exhibit and examine the description of the EMPLOYEES table. Evalu ...
- ObjectARX动态添加AutoCAD传统下拉菜单入门篇(一)
ObjectARX动态添加传统下拉菜单入门篇 图文by edata , 转载注明出处 http://www.cnblogs.com/edata AutoCAD 添加传统下拉菜单有很多种方式,比较典型 ...
- scrapy实战2,使用内置的xpath,re和css提取值
以伯乐在线文章为爬取目标blog.jobbole.com,发现在"最新文章"选项中可看到所有文章 一般来说,可以用scrapy中自带的xpath或者css来提取数据,定义在 ...