【Unity】小地图制作

本文介绍游戏中小地图的制作过程。

 

实现效果

 

 实现原理:在角色正上方设置一个镜头垂直向下的跟随摄像机,把摄像机拍摄到的画面投影到小地图上。

 

Step1:创建地图摄像机

在资源文件新建一个Render Texture,命名为miniMapTexture。

Render Texture是一种可以渲染的材质,可以当作摄像机拍摄到的动态画面的载体。

【Unity】小地图制作_第1张图片 Render Texture

 

 新建一个Camera作为角色(摄像机跟随对象)的子物体,命名为miniMapCamera,把miniMapTexture拖到Target Texture。

①Position:摄像机位置

②Projection:设置摄像机投影方式为正射投影

③Size:摄像机的投影范围(小地图的缩小放大)

④Target Texture:投影的载体

 

【Unity】小地图制作_第2张图片 Camera

 

Step2:设置地图UI

 新建一个Image,命名为mapMask,拖遮罩图到①。添加组件Mask。Mask组件的作用是将地图不想显示的部分遮住,比如一般小地图的形状都是圆形的,那么Source Image应该是一个圆形图像,这样就只会显示圆形中的部分。

①Source Image:用来遮罩的图片,通常是一个黑色的圆形

②Show Mask Graphic:是否显示遮罩图,可选

 

【Unity】小地图制作_第3张图片

 

新建一个Raw Image作为mapMask的子物体,拖miniMapTexture到Texture字段

【Unity】小地图制作_第4张图片

 

Step3:设置地图图标

 新建一个Quad(3D Object/Quad)作为角色的子物体,设置属性如图。

Layer设置为MiniMap层(自行创建),另外地图摄像机的Culling Mask字段只勾选该层和场景层,即不显示图标和场景以外的物体。

同理,MainCamera不应勾选MiniMap层。

【Unity】小地图制作_第5张图片

 

到这里,一个小地图基本完成了,但运行后发现地图的方向不是固定的,而是随角色移动而变换。这是因为摄像机作为角色的子物体,方向会跟随角色变化,解决方法是让摄像机成为一个单独的独立物体,这就需要另外编写脚本控制摄像机跟随角色。

【Unity】小地图制作_第6张图片

 

脚本很简单,只需让摄像机在x、z轴上的位置与角色保持同步就可以了。

至于y轴(摄像机高度),由于角色的position.y有可能会产生变化,决定了摄像机的position.y不可以是一个常量。

float posX = Player.instance.transform.position.x;    //角色的position.x
float posZ = Player.instance.transform.position.z;    //角色的position.z
OffsetY = Player.instance.transform.position.y + 20;  //摄像机与角色的偏移距离
Vector3 pos = new Vector3(posX, OffsetY, posZ);
transform.position = pos;

 

你可能感兴趣的:(Unity3D)