如何在Unity3D 5.x中添加简单的水效果

如何在Unity3D 5.x中添加简单的水效果,第1张

代码如下:

struct Input {

float2 uv_MainTex

float2 uv_NoiseTex

}

void vert(inout appdata_full v,Input o)

{

UNITY_INITIALIZE_OUTPUT(Input o)

o.vertcolor=v.color

}

void surf(Input IN, inout SurfaceOutput o) {

float2 speed=float2(xscroll,yscroll)*_Time.x+IN.uv_NoiseTex

fixed4 noise1 = tex2D(_NoiseTex,speed)

fixed4 noise2 = tex2D(_NoiseTex,speed)

half4 c=tex2D(_MainTex,float2(noise1,x+noise2,y,noise1.y+noise2.x))

o.Albedo = c.rgb * N.vertex.color.rgb + _MainColor.rgb

o.Alpha = d.a*IN.vertex.color.a*_MainColor.a

}

其中核心的部分就是使用noisetex贴图对maintex进行UV采样从而实现模拟的流水折射扭曲效果

注:

UNITY_INITIALIZE_OUTPUT(type,name)这个函数的作用就是吧name类型 转成type类型;

在Unity官方的Asset商店里搜Liquid Physics能找到很多流体物理模拟插件,有付费的也有免费的,它们可以实现流体物理碰撞效果,也就是你的水花效果。更简单的方法是,将水花做成粒子动画,然后检测角色和物体与水面的碰撞,检测到时就播放这个粒子动画。

启动unity3d软件,unity3d中提供了两个水资源包,分贝是water(basic)与water(pro),即专业版与免费版。我就打开一个之前随便创建的项目了,随便见了几个立方体。

在菜单栏中找到Asset,单击它asset,再单击import package ,最后单击water(basic)。d出对话框,直接单击import,导入资源包。

这时在项目窗口,会出现导入的资源。可以看到其中有两个水体,通过名字,我们知道它们分别是模拟白天的水,与夜晚的水效果。

以其中一个为例,用鼠标直接将水体拖动到场景窗口中,就可以看到水效果了。

一个是在场景窗口中的显示,一个是在游戏窗口中的显示。

选择水体,在检视窗口,可以看到水体的细节调解,由于是简单水体,调解的东西不是很多。

下面介绍一下专业版水体的加入,在菜单栏中找到Asset,单击它asset,再单击import package ,最后单击water(pro)。d出对话框,直接单击import,导入资源包。

这时在项目窗口,会出现导入的资源。可以看到其中有两个水体,通过名字,我们知道它们分别是模拟白天的水,与夜晚的水效果。只不过是专业版的水体。

以其中一个为例,用鼠标直接将水体拖动到场景窗口中,就可以看到水效果了。

专业水体较一般水体而言,增加了水的折射与反射效果,看起来更加逼真。可以明显看到,水下的物体透过水面的效果与阳光在水面反射的效果。一个是在场景窗口中的显示,一个是在游戏窗口中的显示。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11491603.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存