Unity实现简单小地图功能

前言

在很多的游戏中都有小地图的功能,例如现在大火的吃鸡类游戏、MOBA类游戏、FPS射击类游戏等等,而且我在开发的很多项目中也碰到过很多类似的需求,在这篇博客中简单介绍下使用Unity实现简单小地图的功能。

步骤

1.在主角身上新建一个子物体,在这里用一个sphere替代,起名为dummy,如下图所示:

Unity 简单地图导航循环长箭头实现 unity接入地图_System


2.新建一个Material,将其Shandr设置为Legacy Shader/Self-Illimin/Diffuse,随便选择一种颜色,如下图所示:

Unity 简单地图导航循环长箭头实现 unity接入地图_System_02


3.将此Material挂载到dummy上,并新建一个Layer层,取名为dummy,将dummy物体的Layer层选择为dummy,如下图所示:

Unity 简单地图导航循环长箭头实现 unity接入地图_Mask_03


4.继续新建一个Layer层,起名为diXing,将Terrain的Layer层选择为diXIng,如下图所示:

Unity 简单地图导航循环长箭头实现 unity接入地图_Mask_04


5.新建一个Camera,将此Camera拉至主角上方,并且调整角度,使其能够俯视主角,具体参数根据实际情况调整,如下图所示:

Unity 简单地图导航循环长箭头实现 unity接入地图_Mask_05


6.为Camera添加跟随功能,使其能够跟着主角移动但不会跟着主机旋转,脚本代码如下所示:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MapCameraControl : MonoBehaviour
{
    #region 参数
    //跟随的物体
    public Transform followObject;
    //跟随的三位数
    Vector3 vector;

    #endregion

    #region 常规方法
    // Use this for initialization
    void Start ()
    {
        vector = this.transform.position - followObject.position;
	}

    private void LateUpdate()
    {
        ToFollow();
    }
    #endregion

    #region 私有方法

    void ToFollow()
    {
        this.transform.position = followObject.position + vector;
    }
    #endregion
}

7.新建一个RenderTexture,它的作用是将小地图Camera显示在UI上,具体参数调整如下图所示:

Unity 简单地图导航循环长箭头实现 unity接入地图_Mask_06


8.将RenderTexture,Camera跟随脚本挂载到小地图Camera上,将小地图Camera的Culling Mask只选择dummy,diXing层,使它只能看到dummy物体和地形,设置如下图所示:

Unity 简单地图导航循环长箭头实现 unity接入地图_Unity 简单地图导航循环长箭头实现_07


9.在场景中新建一个RawImage,将RenderTexture挂载到它的Texture上,如下图所示:

Unity 简单地图导航循环长箭头实现 unity接入地图_System_08


10.至此,一个简单的小地图搭建基本完成,里面主角移动以及其他设置不在这里赘述了,运行工程,效果如下图所示:

Unity 简单地图导航循环长箭头实现 unity接入地图_Mask_09

后记

知识和技能是一点一滴积累起来的,加油!