IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 用Unity实现建筑切片生长动画 -> 正文阅读

[游戏开发]用Unity实现建筑切片生长动画

效果展示:

切片生长动画

当前效果需要自己手动写一个shader,效果与unity版本无关,模型没有特别要求

步骤一:
在unity创建一个SurfaceShader类型的shader,命名为ClippingShader,双击进入vs进行编辑,shader内容如下:

Shader "Custom/ClippingShader"
{
	Properties
	{
		_Color("Color", Color) = (1,1,1,1)
		_MainTex("Albedo (RGB)", 2D) = "white" {}
		_Glossiness("Smoothness", Range(0,1)) = 0.5
		_Metallic("Metallic", Range(0,1)) = 0.0


	   [HDR] _CutoffColor("Cutoff Color",Color) = (1,0,0,0)
	}
		SubShader
		{
			Tags { "RenderType" = "Opaque" }


			LOD 200

			Cull off

			CGPROGRAM
			// Physically based Standard lighting model, and enable shadows on all light types
			#pragma surface surf Standard fullforwardshadows

			// Use shader model 3.0 target, to get nicer looking lighting
			#pragma target 3.0

			sampler2D _MainTex;


		   float4 _Plane;
		   float4 _CutoffColor;

			struct Input
			{
				float2 uv_MainTex;
				float3 worldPos;
				float facing : VFACE;
			};

			half _Glossiness;
			half _Metallic;
			fixed4 _Color;

			void surf(Input IN, inout SurfaceOutputStandard o)
			{
				float distance = dot(IN.worldPos, _Plane.xyz);
				distance = distance + _Plane.w;

				clip(-distance);

				float facing = IN.facing*0.5 + 0.5;

				// Albedo comes from a texture tinted by color
				fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
				o.Albedo = c.rgb;
				// Metallic and smoothness come from slider variables
				o.Metallic = _Metallic;
				o.Smoothness = _Glossiness;
				o.Alpha = c.a;
			}
			ENDCG
		}
			FallBack "Diffuse"
}

步骤二:
在unity新建一个C#脚本,命名为ClippingPlane,双击进入vs进行编辑,编辑内容如下:

using UnityEngine;

public class ClippingPlane : MonoBehaviour
{
    public Material m_Material;
    private void Update()
    {
        Plane plane = new Plane(transform.up, transform.position);
        Vector4 planeVisulization = new Vector4(plane.normal.x, plane.normal.y, plane.normal.z, plane.distance);
        m_Material.SetVector("_Plane", planeVisulization);
    }
}

这里做一点说明,当前代码是做的向上生长,如果需要做成左右或者前后生长,可以把new Plane()里面的transform.up改成transform.right或者transform.forward即可

步骤三:
上述shader和脚本写好之后,把需要生长改变的材质赋值成我们自定义的shader,然后新建一个空物体,在空物体上添加我们写好的脚本,赋值好材质,根据空物体的高度决定shader材质是否显示

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:56:40  更:2021-11-09 19:57:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/28 0:33:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码