小地图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小地图相关的知识,希望对你有一定的参考价值。

using System.Collections.Generic;
using UnityEngine;

public class MiniMap : BaseUI
{
    public Camera cameMiniMap; // 小地图摄像机
    public UITexture miniMap; // 小地图图片
    public List<UITexture> roleSpts; // 英雄角色图片
    public List<UITexture> otherSpts; // 英雄角色图片

    private Transform roleSprite; // 战斗主角
    private BaseSprite spt;
    private Vector3 lastRolePosition; //上次主角对象的Position
    private float lastCheckTime; // 上次检查的时间
    private float checkTimeInterval = 0.3f; // 检查的时间周期
    private float checkSqrDistanceInterval = 0.25f;

    private float mapWidth; //大地图的宽度
    private float mapHeight;//大地图的高度
    bool isStart = false;

    private float movedX;
    private float movedY;

    Texture A1;
    Texture A2;
    Texture B1;
    Texture B2;

    public void InitMap()
    {
        roleSprite = Game.Instance.GetCurScene().Star.transform;
        spt = Game.Instance.GetCurScene().Star;
        //原始宽度乘以缩放比例计算出真实宽度
        mapWidth = 95.5f; // size_x* scal_x;
        mapHeight = 159.8f; // size_z* scal_z;

        lastRolePosition = roleSprite.position;
        lastCheckTime = Time.time;
        isStart = true;
        A1 = Instantiate(Resources.Load("MiniMap/CampA1")) as Texture;
        A2 = Instantiate(Resources.Load("MiniMap/CampA2")) as Texture;
        B1 = Instantiate(Resources.Load("MiniMap/CampB1")) as Texture;
        B2 = Instantiate(Resources.Load("MiniMap/CampB2")) as Texture;
    }

    void Update()
    {
        if (!isStart)
            return;

        if (Time.time - lastCheckTime >= checkTimeInterval)
        {
            PKUnionScene scene = Game.Instance.GetCurScene() as PKUnionScene;
            // 自我阵营
            for (int i = 0; i < scene.StarGroupPlayerList.Count; i++)
            {
                NGUITools.SetActive(roleSpts[i].gameObject, true);

                if (scene.StarGroupPlayerList[i].PlayerID != spt.ID)
                {
                    movedX = miniMap.width / mapWidth * scene.StarGroupPlayerList[i].sprite.transform.position.x;
                    movedY = miniMap.height / mapHeight * scene.StarGroupPlayerList[i].sprite.transform.position.z;

                    if (scene.StarGroupPlayerList[i].Camp == EnumPKCamp.Group1)
                        roleSpts[i].mainTexture = B2;
                    else
                        roleSpts[i].mainTexture = A2;

                    roleSpts[i].transform.localPosition = new Vector3(movedX, movedY, roleSpts[i].transform.localPosition.z);
                }
                else
                {
                    movedX = miniMap.width / mapWidth * roleSprite.position.x;
                    movedY = miniMap.height / mapHeight * roleSprite.position.z;

                    if (scene.StarGroupPlayerList[i].Camp == EnumPKCamp.Group1)
                        roleSpts[i].mainTexture = B1;
                    else
                        roleSpts[i].mainTexture = A1;
                    // 设置自己的位置
                    cameMiniMap.transform.localPosition = new Vector3(movedX, movedY, cameMiniMap.transform.localPosition.z);
                    // 设置自己的方向
                    roleSpts[i].transform.eulerAngles = new Vector3(0, 0, -(roleSprite.eulerAngles.y));
                }
            }
            // 敌对阵营
            for (int i = 0; i < scene.OtherGrouPlayerList.Count; i++)
            {
                NGUITools.SetActive(otherSpts[i].gameObject, true);
                movedX = miniMap.width / mapWidth * scene.OtherGrouPlayerList[i].sprite.transform.position.x;
                movedY = miniMap.height / mapHeight * scene.OtherGrouPlayerList[i].sprite.transform.position.z;

                if (scene.OtherGrouPlayerList[i].Camp == EnumPKCamp.Group2)
                    otherSpts[i].mainTexture = A2;
                else
                    otherSpts[i].mainTexture = B2;

                otherSpts[i].transform.localPosition = new Vector3(movedX, movedY, 0);// -cameMiniMap.transform.localPosition.z);
            }
            lastCheckTime = Time.time;
        }
    }
}

 

以上是关于小地图的主要内容,如果未能解决你的问题,请参考以下文章

谷歌地图片段显示,但没有地图

在Android Studio片段之间切换时地图片段不隐藏

使用片段的谷歌地图

如何从片段外部清除/重置地图?

恢复片段后android地图停止响应

带有标记的Android谷歌地图片段