Unity3D】unity3d如何创建河流湖泊海洋?

2021-01-08 10:40发布

8条回答
爱学习的小巴
2楼 · 2021-01-08 13:51

1、在unity3d菜单选择“Assets”--“Import Package”--“Environment”。

2、弹出窗口菜单直接选择“Import”导入。

3、在项目文件夹中会多出一个“Standard Assets”文件夹。

4、在“Standard Assets”文件夹里面我们可以找到“Water”与“Water(Basic)”这两个文件夹。

5、在“Water”文件夹的“Prefabs”中“WaterProDaytime”或“WaterProNighttime”直接拖拽到场景使用,我们就可以得到一个倒影明显的水面效果。

6、在“Water4”文件夹的“Prefabs”中“Water4Advanced”或“Water4Simple”同样添加到场景中,我们会得到海洋的洋面一样的效果。

7、打开“Water(Basic)”文件夹在“Prefabs”中把“WaterBasicDaytime”或“WaterBasicNightime”添加到场景中可以得到波光粼粼的水面效果。

老杜
3楼 · 2021-01-08 15:09

我假设你要么使用当前的Starting Project开始,要么已经完成了之前的 Unity Terrain工具 教程。如果不是这样,您可以启动一个新项目,但必须导入环境资产包并创建自己的地形。如果您使用的是新项目,请转到主菜单“ 资产”>“导入包”,然后选择“ 环境”

从现在开始,本教程将重点介绍当前的Starting Project。通过分析地形,您可以看到,在中心,地面更深一些。该区域专门为您创建了一个湖泊。一种方法是使用Water Basic预制件。

在“ 项目”选项卡中,打开“ 资源”文件夹,然后打开“ 环境”。在这里你会发现两个水文件夹:水(基本)。最初,您将使用Water(Basic)。 打开它,然后打开Prefabs文件夹。有两种预制件可供选择:WaterBasicDaytimeWaterBasicNightime

在继续之前,这里是对预制件的快速解释。预制件充当游戏对象的模板。它允许您在场景中创建新的对象实例,并且对预制资产所做的任何编辑都会立即反映在从其生成的所有实例中。 

但是,您也可以单独覆盖每个实例的组件和设置。如果您需要在场景或多个场景中拥有多个相同类型的对象,这将非常有用。通过使用预制件,您无需从头开始创建每个对象,如果要对其进行调整,它将自动更新所有实例。

正如您可能已经猜到的那样,如果您在白天有场景,则应使用WaterBasicDaytime,并在夜间场景中使用WaterBasicNightime。它们都以完全相同的方式工作,但第二个设置为更暗。

在这个项目中你有一个白天场景,所以你将使用WaterBasicDaytime预制。使用鼠标选择预制件,然后将其拖动到场景中(或多或少地插入地面的孔中,类似于下图)。这会将WaterBasicDaytime添加到场景中。

接下来,选择水并调整其位置比例

当您根据需要定位和配置水时,让我们快速了解您可以使用它做什么。如果选择它并转到“ 检查器”选项卡,您将看到几个组件:刚刚使用的变换组件,水基本平面(网格过滤器),设置水的材质网格渲染器水基本脚本着色器

网格渲染器中,您可以更改与阴影生成相关的一些选项,如“ 投射阴影”或“ 接收阴影”。您还可以修改与反射相关的多个属性。将“ 投射阴影” 和“ 接收阴影”设置 为“ 开”。接下来,对于 Reflection Probes,我们将其设置为Blend Probes和Skybox

WaterBasicDaytime Shader允许您设置水的一些参数,如Wave scaleWave speed。您可以使用这些值来查看某些图形更改,但现在保留默认值。

现在,为了查看最终结果,请将相机放在合适的位置。为此,请移至“ 场景”视图,并在获得所需视图后,选择“ 主摄像机”游戏对象。现在转到菜单GameObject,然后选择Align With View。这会将相机放在您想要的位置。按播放

从这里,您可以返回并更改预制属性以查看属性之间的差异。使用Cast ShadowsWave scaleWave speed来感知修改。

Water Pro

下一步是学习如何使用Water Pro创建和配置湖泊。在继续之前,从场景中删除WaterBasicDaytime游戏对象。

接下来,在“ 项目”选项卡中,打开“ 标准资源”文件夹并再次打开“ 环境”。这一次,打开Water文件夹。你有两个文件夹:4。要使用Water Pro,您必须打开Water文件夹。接下来,打开Prefabs文件夹。

就像Water Basic一样,文件夹中有两个预制件:WaterProDaytime 和WaterProNightime。它们都以完全相同的方式工作,并且前面提到的WaterProDaytime设置为白天场景,而WaterProNightime设置为较暗的环境。

由于您有白天场景,因此您应该选择WaterProDaytime。选择预制件并将其拖动到场景中。再次,选择WaterProDaytime游戏对象并调整其位置比例

一旦湖面尺寸合适,您就会立即看到水的图形质量与Water Basic相比有所不同。

当您有水时,请快速查看您可以用它做什么。如果选择它然后查看“ 检查器”选项卡,您将看到几个组件:变换组件,水平面网格网格渲染器(脚本)着色器

 

网格渲染 性能类似于以前的一个。将“ 投射阴影” 和“ 接收阴影”都设置 为“ 开”。接下来,将Reflection Probes 更改为Blend Probes和Skybox

脚本 提供了可以修改的其他属性。这些属性不适用于以前的水类型。

您可以将水模式设置为简单,这将使水像基本水一样工作,反射,这将使水具有反射但没有折射,或折射,允许反射和折射。您可以禁用像素灯,这将降低反射/折射中的照明质量,以提高性能。 

您可以设置纹理大小,它指的是生成的水纹理的分辨率。“ 剪裁平面偏移”值是反射或折射图像出现的水下方距离。您可以设置受影响的反射图层以及折射图层。这些是图层蒙版,用于控制哪些场景对象在水中可见。默认情况下,选择所有图层。

着色器组件中,您可以更改波形比例,并更改反射折射扭曲的值。这些将根据它们对反射或折射物体的影响来确定涟漪的表观高度。


Transform
4楼 · 2021-01-08 16:03

整个场景可以使用Unity“地形系统”进行制作。像楼主说的这些水资源,都是有官方资源包的,不需要手动绘制,导入后摆放在相应位置即可。

Ross
5楼 · 2021-01-08 16:29

unity3D里面所看到的河流湖泊海洋其实是用的shader实现的效果,下面的代码是实现的和种波浪的效果:

Shader "Unity Shaders Book/Chapter 11/Water"{ Properties { //河流纹理 _MainTex ("Main Tex", 2D) = "white" {}    //控制整体颜色    _Color ("Color Tint", Color) = (1,1,1,1) //控制水流波动的幅度 _Magnitude ("Distortion Magnitude", Float) = 1 //控制水流波动的频率 _Frequency ("Distortion Frequency", Float) = 1 //控制波长的倒数,倒数越大,波长越小 _InvWaveLength ("Distortion Inverse Wave Length", Float) = 10 //河流纹理的移动速度 _Speed ("Speed",Float) = 0.5 } SubShader { //由于序列帧图像通常是透明背景,所以需要设置pass的相关状态,以渲染透明效果 //半透明“标配”,DisableBatching指明是否对该SubShader使用批处理,批处理会合并所有相关模型,模型各自的模型空间就会丢失 Tags{ "Queue" = "Transparent" "IgnoreProject" = "True" "RenderType" = "Transparent" "DisableBatching" = "True"} Pass { Tags{ "LightMode" = "ForwardBase" } //为了让水流的每个面都能显示 //关闭深度写入 ZWrite off //开启并设置混合模式 Blend SrcAlpha OneMinusSrcAlpha //关闭剔除功能 Cull Off CGPROGRAM #pragma vertex vert #pragma fragment frag // make fog work #pragma multi_compile_fog #include "UnityCG.cginc" sampler2D _MainTex;    float4 _MainTex_ST; float4 _Color; float _Magnitude; float _Frequency; float _InvWaveLength; float _Speed; 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; offset.yzw = float3(0.0, 0.0, 0.0); //_Frequency*_Time.y控制正弦函数频率 //加上模型空间下的分量乘以_InvWaveLength位置控制不同位置具有不同的位移 //乘以_Magnitude控制波动幅度 offset.x = sin(_Frequency * _Time.y + v.vertex.x * _InvWaveLength + v.vertex.y * _InvWaveLength + v.vertex.z * _InvWaveLength) * _Magnitude; //把位移量添加到顶点位置上 o.pos = UnityObjectToClipPos(v.vertex + offset); //进行纹理动画,使用_Time.y和_Speed控制水平方向上的位移 o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); o.uv += float2(0.0, _Time.y * _Speed); return o; } fixed4 frag (v2f i) : SV_Target { //对纹理进行简单采样 fixed4 c = tex2D(_MainTex, i.uv); // 添加颜色控制    c.rgb *= _Color.rgb; return c; } ENDCG } } Fallback"Transparent/VertexLit"}

其实网上有好多类似的shader,感兴趣的可以搜一下.


我的网名不再改
6楼 · 2021-01-09 14:12

unity3d中创建场景的时候,需要创建海洋河流,为了看上去更逼真,还需要添加水面倒影,下面我们就来看看详细的教程。

软件名称:Unity 2019.1.0a8 Download Assistant 官方安装版(附教程) 游戏引擎软件大小:334KB更新时间:2018-11-18

1、在unity3d菜单选择“Assets”--“Import Package”--“Environment”。

2、弹出窗口菜单直接选择“Import”导入。

3、在项目文件夹中会多出一个“Standard Assets”文件夹。

4、在“Standard Assets”文件夹里面我们可以找到“Water”与“Water(Basic)”这两个文件夹。

5、在“Water”文件夹的“Prefabs”中“WaterProDaytime”或“WaterProNighttime”直接拖拽到场景使用,我们就可以得到一个倒影明显的水面效果。

6、在“Water4”文件夹的“Prefabs”中“Water4Advanced”或“Water4Simple”同样添加到场景中,我们会得到海洋的洋面一样的效果。

7、打开“Water(Basic)”文件夹在“Prefabs”中把“WaterBasicDaytime”或“WaterBasicNightime”添加到场景中可以得到波光粼粼的水面效果。


梅向南
7楼 · 2021-01-10 17:51

一般这些模型都不是在Unity中做的,提前在建模软件中做好,比如玛雅或者3Dmax,做好之后直接导入Unity中用就可以啦。

小狮子
8楼 · 2021-01-11 20:34

在unity3d菜单选择“Assets”--“Import Package”--“Environment”。

undefined

弹出窗口菜单直接选择“Import”导入。

undefined

在项目文件夹中会多出一个“Standard Assets”文件夹。

undefined

在“Standard Assets”文件夹里面我们可以找到“Water”与“Water(Basic)”这两个文件夹。

undefined

在“Water”文件夹的“Prefabs”中“WaterProDaytime”或“WaterProNighttime”直接拖拽到场景使用,我们就可以得到一个倒影明显的水面效果。

undefined

在“Water4”文件夹的“Prefabs”中“Water4Advanced”或“Water4Simple”同样添加到场景中,我们会得到海洋的洋面一样的效果。

undefined

打开“Water(Basic)”文件夹在“Prefabs”中把“WaterBasicDaytime”或“WaterBasicNightime”添加到场景中可以得到波光粼粼的水面效果。

undefined


kitidog2016
9楼 · 2021-01-12 09:15

在unity3d菜单选择“Assets”--“Import Package”--“Environment”。

undefined

弹出窗口菜单直接选择“Import”导入。

undefined

在项目文件夹中会多出一个“Standard Assets”文件夹。

undefined

在“Standard Assets”文件夹里面我们可以找到“Water”与“Water(Basic)”这两个文件夹。

undefined

在“Water”文件夹的“Prefabs”中“WaterProDaytime”或“WaterProNighttime”直接拖拽到场景使用,我们就可以得到一个倒影明显的水面效果。

undefined

在“Water4”文件夹的“Prefabs”中“Water4Advanced”或“Water4Simple”同样添加到场景中,我们会得到海洋的洋面一样的效果。

undefined

打开“Water(Basic)”文件夹在“Prefabs”中把“WaterBasicDaytime”或“WaterBasicNightime”添加到场景中可以得到波光粼粼的水面效果。

undefined


相关问题推荐

  • 回答 17

    还是要学好编程基础呀如果你觉得编程很苦难 不一定要从c#开始学  学学js flash as等等  有个梯度就好多了如果要用好unity  不会编程那是不行的  学习的过程中都有个头疼的过程  记住  头越痛  代表你要接受的东西越多  坚持 你的大脑在和知识兼容中:D...

  • unity如何自学Unity3D 2022-01-06 15:24
    回答 18

    可以先思考学习的目的,是什么因素在驱动你。是完成一款作品?进入某个行业?还是探究某类问题?否则和技术相关的知识浩如烟海,很容易迷失在细枝末节上。而要找到动力源头。个人的经验,就是关注一些和自己同方向,同类型的创作者。他们输出的作品会激励你,...

  • 回答 23

    可以让模型师直接作出这样的形状,如果用纯Unity制作,就要用基本游戏对象拼接了,包括楼梯,城堡,都可以拼接出来。正常情况不会这样做,因为不够精美,都是建模师来实现,毕竟Unity不属于专业的建模软件,侧重于实现功能。...

  • 回答 2

    Shader Unlit/Test{Properties{_MainTex(MainTex,2D)=white{}_MainColor(MainColor,COLOR)=(1,1,1,1)_AddTex(AddTex,2D)=white{}_Maxset(Max,Range(0.1,1.0))=0.1}SubShader{Tags{RenderType=Transparent Queue=Tran...

  • 回答 4

    文章主要为大家详细介绍了Unity Shader实现水波纹效果,文中示例代码介绍的非常详细具体代码实现如下:Shader Custom/shuibowen{ Properties{ _MainTex(Base (RGB),2D)=white{} _distanceFactor(Distancefactor,float)=1 _timeFactor(time factor,float)=...

  • 回答 7

    策划的最基本的原则就是:改进缺点,做别人没有做到的。无论游戏策划还是其它策划都是一样!    游戏策划的第二个原则:放飞思想。也许你认为我是说策划们应该充满想象力,能想一些匪夷所思的东西!对不起。不是这意思!一个合格的策划不是为了发泄自己的...

  • 回答 7
    已采纳

    可以多玩一些其它的游戏,看一些科幻电影等,寻找灵感。

  • 回答 3
    已采纳

    游戏架构与设计不纯粹是一门科学,它不需要提出假设或探究真理,也不被逻辑或正规方法的严格标准所束缚。游戏的目的就是通过玩来获得娱乐,因此游戏设计即需要艺术家一样的创造力,也需要工程师一样的精心规划。游戏设计是一门手艺,就像好莱坞的电影摄像或服...

  • 回答 5

    void Update(){          transform.rotation = Quaternion.Euler(Vector3.zero);}可以试一下,保证物体x轴和z轴为0就可以使其一直垂直。

  • 回答 3

    界面左右移动、上下移动。。本质都是:手指滑动。。。可以参考这些:https://www.cnblogs.com/coldcode/p/5362537.htmlhttps://blog.csdn.net/totosj/article/details/80112852https://blog.csdn.net/zcc858079762/article/details/85253120...

  • 回答 6

    首先新建一个C#脚本,命名为MyFollow,然后把以下代码粘贴进去,保存:AخA 1using UnityEngine;2using System.Collections;3public class MyFollow : MonoBehaviour4{5    public float distanceAway = 5;          // distance...

  • 回答 5

    安装高通的Vuforia插件即可。

  • 回答 5

    不可以,只能一个工程打一个包。

  • 回答 2

    Edit->Project Settings->Graphics 找到Shader Stripping 中fog mode设置为custom(原来是Automatic),然后选中你想要的模式,最后重新打包就ok

  • 回答 2

    用到的插件:System.Drawing.dllSystem.Windows.Forms.dllSystem.Deployment.dll(运用基于.Net4.x的dll打包时,需要用到该dll,否则会报错)代码如下:using System;using System.Runtime.InteropServices;using UnityEngine;using UnityEngine.UI; p......

  • 回答 6

    如下图,设置为none,然后删掉滑动条就可以了。

没有解决我的问题,去提问