前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Unity 小地图制作

Unity 小地图制作

作者头像
汐夜koshio
发布2020-04-24 18:41:23
1.6K0
发布2020-04-24 18:41:23
举报
文章被收录于专栏:U3DU3D

小地图是游戏中极度常用的组件,在Unity中,实现方式非常简单。

主要利用的原理是将一个单独摄像机的当前拍摄画面实时保存到一张渲染纹理图中,同时将这张纹理图更新显示到ugui中。

得知这一点后,先创建一张用于显示小地图内容的纹理图Render Texture,可以直接在资源文件列表中创建:

在信息面板中可以设置该纹理图的大小,采样方式,压缩方式等。设置完成后将该纹理图放入摄像机的Target Texture中:

这样摄像机就会把实时渲染的结果存储到这张纹理图中。值得注意的是,一般渲染小地图的摄像机多采用正交摄像机,而不采用透视摄像机,因为小地图上不需要显示摄像机纵深方向上的前后的位置关系。

这里设置的未渲染的背景图为纯黑,其实也可以根据需求改为Depth Only。

同时如果小地图上不需要显示所有拍摄到的物体,也可以在Culling Mask中选取需要渲染的层保存到最终输出的纹理图中。

在ugui中创建Raw Image组件用于显示渲染出来的纹理图:

为了更为方便的控制小地图摄像机的初始化和目标跟随,可以添加一个额外的简单控制脚本:

代码语言:javascript
复制
 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 
 5 public class MiniCameraCtrl : MonoBehaviour
 6 {
 7     public float Size = 5f;
 8     public float Height = 10f;
 9     private Transform Player;
10     private Camera Camera;
11 
12     public void Init()
13     {
14         Player = BattleUtils.ActorMgr.PlayerActor.transform;
15         Camera = GetComponent<Camera>();
16 
17         transform.position = Player.position + new Vector3(0, Height, 0);
18         transform.rotation = Quaternion.Euler(90, 0, 0);
19         Camera.orthographic = true;
20         Camera.orthographicSize = Size;
21 
22         StartCoroutine(Follow());
23     }
24 
25     IEnumerator Follow()
26     {
27         for(; ; )
28         {
29             yield return null;
30 
31             if (Player)
32             {
33                 transform.position = Player.position + new Vector3(0, Height, 0);
34                 yield return null;
35             }
36             else
37                 yield break;
38         }
39     }
40 }

例如在地图和主角生成完成后,便开始初始化该摄像机的位置关系及设定跟随等。

效果展示:(摄像机只渲染了地图的地板层)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档