在Unity 5中实现泛波的小舟
发表于2017-04-29
前两天分享的优化文章相信让大多数已有Unity使用经验的开发者都有所收获。今天的教程面向Unity初学者,即便完全没接触过Unity也可以学着动手。这里为大家分享的就是在Unity 5中实现用方向键控制小船移动并切换视角的过程。 搭建场景 新建一个3D工程,将其命名为The Boat,在Asset packages中勾选Cameras,Characters和Environment,将这些资源包添加到工程中。以上资源需要在官网先下载并安装StandardAssets资源包。如下图: ![]() 依次点击菜单项Window>Asset Store,在搜索栏中输入Fishing Boat下载本课内容所需的免费小船模型。点击下载后导入可将小船模型直接添加到工程。如下图: ![]() 依次点击菜单项Game Object>3D Object>Plane新建一个Plane命名为Ground。然后在Project视图中点击右键,在弹出菜单中依次选择Create>Material新建材质,同样命名为Ground,并将该材质赋给之前创建的Plane。 下面设置Ground材质的相关属性,将图片SandAlbedo赋给材质的Albedo字段。然后将Plane沿X轴和Z轴方向放大100倍。此时,我们会发现图片被过度拉伸,修改材质中的Tiling属性使纹理恢复正常,如下图: ![]() 在Project视图中,找到Water4Simple预制,将其直接拖入Hierarchy视图并将位置设为原点。将其Scale的x值设为20,z值设为10。选择Tile下的Water4Simple材质,设置Reflection color属性为你喜欢的颜色。如下图: ![]() 第一人称视角 ![]() 将小船拖入Hierarchy视图,删除小船的子物体fisher和net。 接下来为小船添加碰撞体,直接在场景中新建一个Cube。然后点击Scene下方的小三角选择Wireframe进入网格模式,在网格模式下,调整Cube的大小和位置,让它适应整个船舱。如下图: ![]() 勾选掉所有Cube的MeshRenderer属性,从而所有的Cube都不会被渲染。 从Project视图中将FPSController预制拖拽至场景,放置在小船的正上方。删除场景中的Main Camera。运行场景,小船的第一人称视角便制作完成了。效果如下: ![]() 第三人称视角及移动 先禁用场景中的FPSController。将Cameras目录下的MultipurposeCameraRig预制拖拽至场景中。将小船的Tag设置为Player,调节MultipurposeCameraRig的子物体Pivot至合适的高度。 小技巧: 通常在场景运行时才能看出物体的最佳坐标。这时,可以在运行时复制当前组件的坐标信息,停止运行后再拷贝给游戏对象,如下图: ![]() 新建C#脚本命名为BoatMove,用来实现小船的移动,代码如下: [C#] 纯文本查看 复制代码
运行场景,小船就可以在海面自由的移动了。 切换视角 在fishingboat下新建子物体playStartPos作为第一人称视角控制器的出生点,将其摆放置合适位置。新建空对象switchMode,用于控制切换视角。新建脚本SwitchMode并添加到switchMode对象,脚本代码如下:
![]() |