简单瀑布(流水)效果

步骤

简单的瀑布效果,简单地分为以下四个步骤

  • 网格

    这里写图片描述

  • 纹理及纹理的设置

    这里写图片描述
    这里写图片描述

  • shader

Shader "Mobile/流水(Test)" {
    Properties {
        _TintColor ("Tint Color", Color) = (0.5,0.5,0.5,0.5)
        _EmissiveStrength ("Emissive strength", Range (0,1)) = 0.5
        _Translulency ("Translulency", Range (0,1)) = 1.0
        _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
    }

    SubShader {
        Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
        LOD 200
        Cull Off Lighting Off ZWrite Off
        Blend SrcAlpha One
        AlphaTest Greater .01
        ColorMask RGB

        CGPROGRAM
        #pragma surface surf Lambert alpha

            fixed4 _TintColor;
            half _EmissiveStrength;
            half _Translulency;
            sampler2D _MainTex;

            struct Input {
                float2 uv_MainTex;
            };

            void surf (Input IN, inout SurfaceOutput o) {
                half4 c = tex2D(_MainTex, IN.uv_MainTex);
                //o.Albedo = 2*c*_TintColor;
                o.Emission = 2*c*_TintColor*_EmissiveStrength;
                o.Alpha = 2*(c.a /* (c.r+c.g+c.b)/3*/)*_Translulency;
            }

        ENDCG
    }

    Fallback "Transparent/Diffuse"
}
  • 脚本(修改瀑布对象的Material的Texture的Offset属性,即纹理的偏移量)
using UnityEngine;
using System.Collections;

public class uvAnimation : MonoBehaviour
{
    public int materialIndex;
    public string textureName = "_MainTex";
    public Vector2 uvAnimationRate = new Vector2(1f, 0f);
    private Vector2 uvOffset = Vector2.zero;

    private void LateUpdate()
    {
        uvOffset += (Vector2) (uvAnimationRate * Time.deltaTime);
        if (GetComponent<Renderer>().enabled)
        {
            if(GetComponent<Renderer>().materials.Length > materialIndex){
                GetComponent<Renderer>().materials[materialIndex].SetTextureOffset(textureName, uvOffset);
            }

        }
    }
}

演示效果

这里写图片描述

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值