52、游戏环境打造全攻略

游戏环境打造全攻略

1. 光照设置优化

首先,从 Edit ➤ Project Settings ➤ Quality, Shadows ,将 Shadow Distance 设置为 60。在 Beast 中使用导入的光照贴图时,光照贴图必须是 .exr 文件类型,且其 alpha 通道包含照明数据。可以通过在 Lightmapping 窗口中将替换贴图拖到现有贴图上来替换 Beast 渲染的光照贴图。若贴图尚未烘焙,需在 Maps 部分增加数组大小,并为相应对象分配正确的贴图索引。若使用单张贴图且不使用动态光照,要将 Mode 设置为 Single Lightmaps

对于自定义着色器的恢复,当神庙处于动态阴影范围内时材质效果良好,但替换光照贴图版本后质量下降。对于内神庙,关闭 Static 以防止生成光照贴图;对于外神庙和其他带有预渲染光照贴图的结构,要让对象投射阴影但不计算新的光照贴图,需更改光照贴图中的 Scale
1. 再次打开 Lightmapping 窗口。
2. 选择外神庙。
3. 在 Object 选项卡上,将光照贴图中的 Scale 设置为 0。
4. 对神龛、石碑、外墙、圆顶、Harvey、Gertrude 和废墟石重复此操作。

之后,将 Temple Outside 1 材质添加回神庙,并将灯光的阴影强度设置为约 0.6。

在重新烘焙场景前,可增大地形阴影大小:
1. 打开 Lightmapping 窗口。
2. 选择地形并将其 Map Size 设置为 2048,使树木阴影有更高分辨率。
3. 在贴图预览上方点击 Clear ,删除现有光照贴图。
4. 烘焙场景。
5. 将其余对象的光照贴图大小设置为 0,仅保留地形进行烘焙。
6. 确保地形对象使用光照贴图索引 0。
7. 在 Bake 部分,将质量再次设置为 High
8. 点击 Bake Scene
9. 关闭 Lightmapping 窗口。
10. 保存场景和项目。

2. 进入神庙下层

光照贴图处理好后,开始探索神庙内部。神庙有一部分在地下,当前 Unity 的地形生成系统不允许在地形上挖孔,可在进入建筑后关闭地形组件,但难以禁用和启用地形碰撞器,且重新启用地形时可能有延迟。可使用一些解决方法,如使用着色器、强制绘制顺序、拼接多个地形贴图等。本项目采用玩家进入神庙时降低地面的方法。

要进入神庙下层,需触发楼梯动画:
1. 选择 TempleStairs 对象。
2. 在 Animation 组件中,开启 Play Automatically
3. 点击 Play ,等待楼梯降下后进入神庙。

若楼梯难爬,可调整 Character Controller 组件的 Step offset ,若不行可将坡度限制设置为 90 度,但玩家可能爬上神庙侧面。这里可将楼梯的 Mesh Collider 设置为 Convex
1. 仍选中楼梯对象,在 Mesh Collider 组件中开启 Convex ,再次尝试爬楼梯。
2. 停止 Play 模式并使更改永久生效。

若使用 Pro 且采用延迟光照,进入神庙可能太暗。可通过更改灯光的 Culling Mask 来改变光照:
1. 选择 Sun for Lightmaps 对象。
2. 在其 Culling Mask 中取消勾选 TransparentFX
3. 复制灯光并命名为 Sun for Temple
4. 将阴影类型设置为 None
5. 勾选 Everything ,然后取消勾选 Default
6. 将光照贴图设置为 RealtimeOnly
7. 选择 Temple of Tizzleblat 并将其分配到 TransparentFX 层。
8. 对 Door Upper Door Lower 重复此操作。
9. 点击 Play 并探索神庙内部。

在神庙内室遇到地形阻挡通道的问题,可创建一个简单的脚本来开关地形:
1. 在 My Scripts 文件夹中创建一个新脚本。
2. 命名为 Deactivate 并在脚本编辑器中打开。
3. 添加以下代码:

var object : GameObject;
function OnMouseDown () {
    if (object. activeSelf == false) object.SetActive(true);
    else object.SetActive(false);
}
  1. 保存脚本。
  2. Deactivate 脚本添加到神庙守护者之一 Harvey 上。
  3. 将地形对象拖到 Object 字段中。
  4. 点击 Play
  5. 探索神庙内部。
  6. 返回神庙台阶处选择 Harvey,地形消失。
  7. 探索神庙其余内部区域。
  8. 出去后再次点击 Harvey,重新激活地形。
  9. 停止 Play 模式。
  10. 从 Harvey 上移除脚本。
3. 地形下降设置

为了解触发系统的工作原理,先关闭外神庙:
1. 选择外神庙并停用它。
2. 将场景视图更改为 Top/orthographic 并放大内神庙( Temple of Tizzleblat 对象)。
3. 在层次视图中找到 Trigger Group 并选择它。
4. 将场景视图设置为 Top ortho 以获得良好视角。

地形触发器是简单的碰撞器,设置为 Is Trigger 。采用双触发器设置可避免玩家进出触发器时出现无地形的问题。

接下来创建地形管理脚本:
1. 在 Adventure Scripts 文件夹中创建一个新脚本。
2. 命名为 TerrainManager
3. 在编辑器中打开。
4. 添加以下变量:

var showTerrain = true; // true means show on enter, false means hide on enter
internal var terrain : GameObject;
internal var terrainPosY : float;
  1. 添加 Start 函数:
function Start () {
    terrain = GameObject.Find("Terrain");
    terrainPosY = terrain.transform.position.y ; // get terrain y pos
}
  1. 添加 ManageTerrain 函数:
function ManageTerrain () {
    if (showTerrain) {
        terrain.transform.position.y = terrainPosY; // restore the terrain
    }
    else {
        terrain.transform.position.y = terrainPosY - 20; // drop the terrain
    }
}
  1. 添加 OnTriggerEnter 函数:
function OnTriggerEnter () {
    ManageTerrain ();
}
  1. 保存脚本。

然后将脚本添加到触发器上:
1. 将新的 TerrainManager 脚本拖到每个 Terrain Trigger On Off 对象上。
2. 选中其中一个对象,在 Inspector 中点击 Apply 更新预制件。
3. 对于 Terrain Trigger Off 对象,在 Inspector 中将其 Show Terrain 参数设置为 false
4. 对于 Terrain Trigger On 对象,在 Inspector 中将其 Show Terrain 参数设置为 true

最后测试地形下降功能:
1. 打开外神庙并调整场景视图以查看地形下降。
2. 点击 Play 并进入神庙。
3. 测试触发器并观察场景视图。

4. 神庙入口装饰

为避免玩家在隐藏地形前看到神庙内的地形,以及在神庙内时看到外面的地形,可在入口处添加悬挂的布:
1. 停用 TempleStairs
2. 找到 Entry Hanger 组并激活它。
3. 点击 Play ,布会皱成一团,因为尚未分配吊架。
4. 停止 Play 模式。
5. 选择一块布,在 Interactive Cloth 组件底部将其 Attached Colliders 数组大小设置为 1。
6. 将 Entry Hanger 对象指定为其元素 0。
7. 对另一块布重复此操作。
8. 再次点击 Play ,布会轻轻晃动。
9. 关闭 Play 模式并重新激活 TempleStairs
10. 点击 Play ,驾车穿过布进入神庙,从后面看布时发现背面无面,需要使用双面着色器。

标准的 Unity 着色器中,只有粒子系统和树叶的着色器是双面的,不适合神庙入口的布。可通过在现有着色器中添加 Cull Off 来使其变为双面:
1. 在 Structures ➤ Custom Shaders 文件夹中找到 DS BumpSpec 着色器。
2. 打开着色器。
3. 在 Tags{ "RenderType"="Opaque" } 行之后添加 Cull Off
4. 保存着色器。
5. 点击 Play 再次测试布,此时布背面可见。

5. 创建简单的体积光效果

在神庙内室,使用 Line Renderer 创建简单的体积光效果:
1. 从神庙组中选择吊灯并聚焦。
2. 创建一个新的空游戏对象。
3. 命名为 Volume Light Effect
4. 从 Component ➤ Effects 添加 Line Renderer 组件。
5. 取消勾选 Use World Space
6. 在 Positions 中,将其元素 1 的 Z 设置为 0, Y 设置为 -10。
7. 缩放回能看到完整对象。
8. 在 Parameters 中,将其起始宽度和结束宽度设置为 4。
9. 将 Fairy Dust 材质添加到其 Materials 元素 0 中。
10. 在起始和结束颜色中,将其 Alpha 值调整为 255,颜色调整为浅金色。
11. 在项目视图中选择 Fairy Dust 材质。
12. 复制材质并命名为 VolumeRay
13. 将新材质移动到一个游戏材质文件夹中。
14. 将新材质加载到 Line Renderer 中。
15. 将材质的粒子纹理更改为 Volumetric 纹理。

6. 进入阳台与神龛设置

要进入阳台,需为玩家打开一扇秘密通道门:
1. 在层次结构中选择 Door Upper 并双击在场景视图中聚焦。
2. 将其 Z 值设置为 78。
3. 点击 Play ,通过秘密通道前往阳台。
4. 停止 Play 模式。在场景视图中,需切换 FX 按钮以查看发光对象的发光效果。

除了神庙,还导入了六个主题神龛:光神龛、水神龛、地神龛、植物神龛、音乐神龛和钥匙神龛。每个神龛都有自己独特的符号,玩家需利用其中一些神龛的功能或符号推动游戏进程。后续会为一些神龛添加新效果,并将之前创建的对象和功能融入其他神龛。

整个游戏环境的打造过程涉及到光照、地形、入口装饰、特效等多个方面,通过一系列的设置和调整,能够为玩家营造出一个更加逼真和有趣的游戏世界。

游戏环境打造全攻略

7. 技术点分析与流程总结

为了更清晰地理解整个游戏环境打造的过程,下面对关键技术点和操作流程进行总结:

光照设置优化流程
步骤 操作内容
1 Edit ➤ Project Settings ➤ Quality, Shadows ,设置 Shadow Distance 为 60
2 处理导入光照贴图( .exr 文件类型,alpha 通道含照明数据),按需替换、分配索引等
3 恢复自定义着色器,调整外神庙等对象光照贴图 Scale 为 0
4 添加 Temple Outside 1 材质,设置灯光阴影强度为 0.6
5 增大地形阴影大小,重新烘焙场景,保存项目
进入神庙下层操作流程
步骤 操作内容
1 触发楼梯动画,选择 TempleStairs 对象,开启自动播放
2 若楼梯难爬,调整 Mesh Collider Convex
3 更改灯光 Culling Mask 解决光照过暗问题
4 创建 Deactivate 脚本控制地形开关
地形下降设置流程
步骤 操作内容
1 关闭外神庙,查看触发器位置
2 创建 TerrainManager 脚本管理地形
3 将脚本添加到触发器,设置参数
4 测试地形下降功能
神庙入口装饰流程
步骤 操作内容
1 停用楼梯,激活 Entry Hanger
2 设置布的 Attached Colliders ,使其正常悬挂
3 修改着色器为双面,解决布背面无面问题
创建体积光效果流程
步骤 操作内容
1 选择吊灯,创建 Volume Light Effect 对象
2 添加 Line Renderer 组件,设置参数
3 调整材质和纹理
进入阳台与神龛设置流程
步骤 操作内容
1 打开 Door Upper ,设置 Z
2 通过秘密通道进入阳台
3 后续处理神龛相关功能

下面是整个游戏环境打造的 mermaid 流程图:

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px

    A([开始]):::startend --> B(光照设置优化):::process
    B --> C(进入神庙下层):::process
    C --> D(地形下降设置):::process
    D --> E(神庙入口装饰):::process
    E --> F(创建体积光效果):::process
    F --> G(进入阳台与神龛设置):::process
    G --> H([结束]):::startend
8. 常见问题与解决方案

在游戏环境打造过程中,可能会遇到一些常见问题,下面为大家提供相应的解决方案:

光照相关问题
  • 问题 :光照贴图烘焙效果不佳,阴影模糊或光照不均匀。
  • 解决方案 :检查光照设置,如 Shadow Distance 、地形阴影大小等参数是否合适;尝试提高烘焙质量,重新烘焙场景。
地形相关问题
  • 问题 :地形生成系统无法挖孔,进出建筑时地形处理困难。
  • 解决方案 :采用降低地面、拼接地形贴图等方法;使用脚本控制地形的显示和隐藏。
模型与材质相关问题
  • 问题 :模型材质显示异常,如布的背面无面。
  • 解决方案 :使用合适的着色器,如添加 Cull Off 使着色器变为双面。
动画与碰撞相关问题
  • 问题 :楼梯难爬,玩家移动异常。
  • 解决方案 :调整 Character Controller 组件参数,或设置 Mesh Collider Convex
9. 总结与展望

通过上述一系列的操作和设置,我们成功打造了一个丰富、逼真的游戏环境。从光照的精细调整到地形的巧妙处理,再到各种特效和装饰的添加,每一个环节都为游戏的整体体验增色不少。

在未来的游戏开发中,我们可以进一步拓展和优化这个游戏环境。例如,为神龛添加更多复杂的交互功能,让玩家与神龛之间有更深入的互动;优化体积光效果,使其更加逼真和自然;尝试更多的地形处理方法,解决目前存在的一些局限性。

同时,我们也可以将这些技术和经验应用到其他类型的游戏开发中,不断探索和创新,为玩家带来更多精彩的游戏体验。希望本文能够对游戏开发者们有所帮助,让大家在游戏环境打造的道路上少走弯路,创造出更加出色的游戏作品。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值