unity创建简单漫游

2015年01月20日 14:11 0 点赞 0 评论 更新于 2025-11-21 14:56

在Unity中创建简单漫游的过程较为复杂,下面将详细介绍具体步骤。

前期准备

命名规范

建模中使用的图片、文件、文件夹等,以及模型中的物体、材质等的名称,都不能使用中文或者特殊符号,可使用英文字母、数字、下划线等。

3ds Max设置

  1. 调整单位:将3ds Max的单位设置为米。
  2. 烘培光影设置:进行相关的烘培光影设置。
  3. 植物效果设置
    • 单面片植物:设置其轴心为物体的对称中心,将材质设定为Transparent/VertexLit类型,并为其添加公告板脚本。添加公告板脚本的方法是先选择该植物,然后点击菜单“Component”下的“Scripts”下的“Camera Facing Billboard”。若没有该脚本组件,可打开脚本编辑器,拷贝以下代码到脚本中,保存到“Assets\Scripts”下,命名为“CameraFacingBillboard.cs”:
      using UnityEngine;
      using System.Collections;
      

public class CameraFacingBillboard : MonoBehaviour { public Camera cameraToLookAt;

void Start() { cameraToLookAt = Camera.main; }

void Update() { Vector3 v = cameraToLookAt.transform.position - transform.position; v.x = v.z = 0.0f; transform.LookAt(cameraToLookAt.transform.position - v); } }

- **十字交叉植物**:将其材质设定为Nature/Vegetation Two Pass unlit类型。

### 导出FBX文件
1. **下载FBX导出插件**:获取FBX导出插件,下载地址可按需查找。
2. **拷贝图片**:将3ds Max文件中用到的图片都拷贝到“Textures”目录下。
3. **导出FBX**:打开3ds Max文件,导出为FBX文件,使用默认设置,FBX文件放置在和3ds Max文件相同的目录下。导出时,可将模型简单分类,如地面、植被、楼房等,也可将模型分为几个区域,如小区1、小区2、学校等分开导出。

## 导入到Unity项目
1. **拷贝文件夹**:将包含3ds Max文件、FBX文件和“Textures”文件夹的文件夹拷贝到Unity3D项目的“Assets”目录下。下次用Unity3D编辑器开启本项目时,编辑器将自动导入/更新该文件夹中的信息,并生成“Materials”文件夹。
2. **启动Unity3D编辑器**:打开Unity3D编辑器。
3. **设置FBX文件**:选择刚才拷贝进来的文件中的FBX文件,修改其中“Meshes”下的“Scale Factor”和“Generate Colliders”。点击其他FBX文件或者单击其他区域将弹出对话框,点击“Apply”即可,类似方式设置其他FBX文件。注意,植物/植被类的FBX文件不需要设置“Generate Colliders”项。
4. **拖放FBX文件**:将FBX文件直接拖放到“Hierarchy”区域。
5. **适配显示对象**:点击“Hierarchy”区域中的对象,同时将鼠标移动到三维显示区域,点击键“F”,该对象自动适配显示到三维区域中心。
6. **提高场景亮度**:全部FBX添加完成后,单击“AmbientLight”,调整相关参数以提高场景亮度。

## 设置第一人称浏览
1. **删除主相机**:删除场景中的“Main Camera”。
2. **添加第一人称控制器**:将“Project”区域的“Standard Assets”下的“Prefabs”下的“First Person Controller”拖到“Hierarchy”区域中。
3. **调整控制器位置和高度**:点选“First Person Controller”,调整其位置到场景中合适的位置,并设置其高度为1.37到2.1左右,确保其高度在场景中地面之上。
4. **测试运行**:点击运行,即可测试。
5. **修改视角控制键**:打开“Project”区域中的“StandardAssets”下的“CameraScripts”下的“MouseLook”脚本,在以下代码处添加一行代码:

Quaternion originalRotation; void Update () { if(Input.GetAxis ("Fire2")==0) return; if (axes == RotationAxes.MouseXAndY) { // Read the mouse input axis } }

6. **取消浏览窗口右键菜单**:只要设置Unity对象的参数即可禁止右键菜单的显示,示例代码如下:


## 水面效果设置
1. **创建网格面片**:创建一个网格面片作为水面。
2. **设置水材质和脚本**:给该水面面片设置水材质和水脚本。

## 烘培光影贴图处理
### Unity3D光影烘培要求
U3D的光影贴图使用的是3ds Max中的标准材质的自发光贴图通道来存储光影贴图相关参数。

### 具体操作步骤
1. **附上贴图**:给每个物体都附上贴图,如果是纯色物体,也附上纯色贴图。
2. **打光与选择物体**:打光后,选择要烘培的物体。
3. **设置输出路径和贴图类型**:设置输出路径,添加烘培输出的贴图类型,添加“LightingMap”类型。
4. **设置烘培贴图大小和目标位置**:设置烘培贴图大小和目标贴图位置为“自发光”。
5. **设置烘培材质**:设置烘培材质,选择“输出到源”,点击“渲染”即可。

### 不同材质贴图的烘培处理
1. **标准材质贴图**
- 物体具有标准材质。
- 烘培渲染后,物体具有两个贴图。
- 导出FBX即可。
2. **多重子材质贴图**
- 物体具有多重子材质贴图。
- 渲染烘培后每个子材质都具有两个贴图。
- 选择该物体,执行“多维材质2标准材质.ms”脚本,将该多维材质物体按其材质数量分解为标准材质的多个物体,新物体的名字以“原多维材质物体名字~其材质名称”命名,点击“开始转换”,将该物体从多维材质物体按其子材质分解为多个具有标准材质的物体。
- 将全部具有多维材质类型的物体分解完成后,即可导出。
3. **多个物体使用同一贴图**:在导入FBX文件到Unity3D编辑器时,按贴图生成材质文件,多个物体使用同一贴图会发生错误,修改其中一个的材质设置时,其他使用该贴图的物体都会受影响。解决方法是在Unity3D编辑器中生成一个具有该贴图的新材质,然后重新付给当前物体。
4. **修改物体材质类型为光影贴图**:设置物体的材质类型为“Lightmapped/Diffuse”,根据物体的名称将对应的光影贴图拖动到“Lightmapp”域,其中标准材质物体的光影贴图名称是“其物体名称LightingMap.tga”;从多维材质类型转换过来的物体的光影贴图名称是“其物体名称中~符合前的部分LightingMap.tga”。

## 制作连续加载的场景漫游
场景被分解为多个部分,起始场景较小,启动后,提示继续下载其他场景,下载一个显示一个。

作者信息

feifeila

feifeila

共发布了 3994 篇文章