模拟unity自带地形的grass
来源:互联网 发布:c 怎么获取数组长度 编辑:程序博客网 时间:2024/05/16 17:37
有一个项目地形是整个Mesh,项目想加入模拟Terrain中飘动草的效果。研究了一下grass,第一:那些grass有飘动的效果,应该是在一个面上作了个位点偏移shade;第二:grass一直保持朝向摄像机。 后来上网总结了一下,下面是一些代码。
关于小草有飘动的效果:加入如下shade的材质,放在Quad上:
Shader "Custom/Grass" { Properties { _MainTex ("Grass Texture", 2D) = "white" {} _TimeScale ("Time Scale", float) = 1 } SubShader{ Tags{"Queue"="Transparent" "RenderType"="Opaque" "IgnoreProject"="True"} Pass{ Tags{"LightMode"="ForwardBase"} ZWrite Off Blend SrcAlpha OneMinusSrcAlpha Cull Off CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" sampler2D _MainTex; half _TimeScale; struct a2v { float4 vertex : POSITION; float4 texcoord : TEXCOORD0; }; struct v2f { float4 pos : SV_POSITION; float2 uv : TEXCOORD0; }; v2f vert(a2v v){ v2f o; float4 offset = float4(0,0,0,0); offset.x = sin(3.1416 * _Time.y * clamp(v.texcoord.y-0.5, 0, 1)) * _TimeScale; o.pos = UnityObjectToClipPos(v.vertex + offset); o.uv = v.texcoord.xy; return o; } fixed4 frag(v2f i) : SV_Target{ return tex2D(_MainTex, i.uv); } ENDCG } } FallBack Off}第二:使小草正面朝向摄像机:代码如下
using System.Collections;using System.Collections.Generic;using UnityEngine;public class GrassFollow : MonoBehaviour { public Camera m_Camera; public Transform [] m_GrassObjs;//剩下的grass,跟着做同样动作 public Vector3 Normal;//面法线 Quaternion direction; Vector3 m_qua; public Vector3 Qua { get { return m_qua; } set { m_qua.y = value.y ; m_qua.x = value.x; } } void Start() { direction = Quaternion.FromToRotation(new Vector3(0, 0, 1), Normal); } void Update() { if(m_Camera==null) { return; } Qua = (m_Camera.transform.rotation * direction).eulerAngles; transform.eulerAngles = Qua; foreach (Transform child in m_GrassObjs ) { child.rotation = transform.rotation; } }}上面代码把camera放上,就有朝向效果。
阅读全文
0 0
- 模拟unity自带地形的grass
- Unity自带地形中改树预制体的材质,并显示到场景中
- 导入unity自带的包出问题
- Unity自带的寻路
- Unity自带的网络编程方式
- 关于unity自带的雾
- Unity自带函数
- 去掉unity发布时自带的unity动画标志
- Unity3D自带地形系统的创建与简单设置图文详解
- Unity自带的SimpleJSon的简单使用
- Unity之自带shader
- Unity自带GL详解
- unity自带测试Ping
- Unity 自带函数汇总
- [Unity] Unity编辑器中绘制unity自带的小锁
- unity自带GUI之控件的焦点获取
- 扫描枪自带回车的Java模拟
- 空间环境和地形特征的模拟
- Hdu 3016 Man Down【线段树+Dp】
- 移动端ionic App 资讯上下循环滚动的实现
- HDU 5733 tetrahedron (求四面体内切球模板)
- mybatis动态SQL
- ListView item的点击冲突解决办法
- 模拟unity自带地形的grass
- 008
- Zookeeper
- NSString字符串截取的几种方式
- 如何防止高并发
- 进程间的通信方式
- java-冒泡排序
- 瑜伽教程: 一个跨平台的布局引擎
- AndroidStudio 清除无用资源压缩项目大小