Unity小地图制作

(1)如果没有小地图,可以在编辑场景中调整一个鸟瞰摄像机,刚好可以看到整个地形场景(最好不要大了或者小了),然后使用这张图片作为小地图的背景图。

(2)在没有地形图的情况下,可以直接在屏幕上绘制一个地形图,然后通过比例计算主角在地形位置比例与在地图上的位置,然后在地图上绘制一个小图标来标识主角就行了。

本文中:用鸟瞰视角截了一个图作为地形图,用一个小圆圈图片标识主角,下面给出代码:

public Texture map;//小地形图
    public Texture jueseTexture;//标识角色的图片
    float juesePosX = 0;
    float juesePosY = 0;
    public GameObject player;//角色
    public GameObject plane;//地形
    float planeWidth;//地形的宽
    float planeHeight;//地形的高
    void Start()
    {
        //获取地形的宽高
        planeWidth = plane.GetComponent<MeshFilter>().mesh.bounds.size.x * plane.transform.localScale.x;
        planeHeight = plane.GetComponent<MeshFilter>().mesh.bounds.size.z * plane.transform.localScale.z;
        print(planeWidth + ", "+planeHeight);
    }
    void OnGUI()
{
	//此时的小地图在屏幕的左上方
        GUI.DrawTexture(new Rect(0, 0, map.width, map.height), map);
        GUI.DrawTexture(new Rect(juesePosX, juesePosY, 10, 10), jueseTexture);
    }
    void Update()
    {
     //根据palyer在plane的比例关系,映射到对应地图位置。
        juesePosX = map.width * player.transform.position.x / planeWidth + map.width / 2;
        juesePosY = map.height * (-player.transform.position.z) / planeHeight + map.height / 2;
    }                                                                                   

注释:其中的player.transform.position的x和z的值可以修改,当然要根据小地图摆放的位置:如右上方的话,代码如下:

    void OnGUI()
    {
        //屏幕的右上方
        GUI.DrawTexture(new Rect(Screen.width-map.width, 0, map.width, map.height), map);
        GUI.DrawTexture(new Rect(Screen.width-juesePosX, juesePosY, 10, 10), playerTexture);
    }

    void Update()
    {
        //根据palyer在plane的比例关系,映射到对应地图位置
        juesePosX = map.width * (-player.transform.position.x) / planeWidth + map.width / 2;
        juesePosY = map.height * (-player.transform.position.z) / planeHeight + map.height / 2;
    }


当然还有一个就是在制作地形背景图的时候要与plane保持一直,如果plane是正方形,图片最好也是正方形,如果plane是非正方形,小地形图片也进行比例调整;如果要缩放最好是对图片进行等比例缩放,如画图工具中的保持纵横比的缩放;


你可能感兴趣的:(unity,地图)