小地图

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;
        }
    }
}
时间: 2025-01-15 01:19:33

小地图的相关文章

Unity uGui RawImage 渲染小地图

制作类似 RPG 游戏时,可能会须要显示小地图. 小地图的制作一种方式是用还有一个摄像机来渲染到一张纹理上.实时显示到UI界面. 以Unity 5.0 的 UI 系统为例: 在地图正上方放置一个摄像机,设置其 Culling Mask,比方:Ground(地面).MinimapSign(玩家怪物标识),创建一张 Render Texture,将 Target Texture 属性指向这张纹理图片.例如以下图所看到的: 创建 UI 面板.由于这里小地图打算制作成圆形,使用 Mask 组件和一张掩码

【转】超简单利用UGUI制作圆形小地图

http://sanwen.net/a/ithhtbo.html 由于UI都是Achor自己用PS做的,比较粗糙,大家见谅,不过丝毫不影响功能的实现,下面我们看看今天的笔记: 首先我们看看需要哪些组件: 1.在Canvas画布下新建一个GameObject,改名为Mask,顾名思义,该组件实现遮罩功能. 2.在Mask下面添加RawImage,用来实现小地图动态显示. 3.新建一个Sprite作为角色的子对象,改名为Icon,实现小地图中代替角色的箭头图标.(贴图大家根据自己喜好来画,这里Ach

Unity 制作RPG小地图

效果图: 最近公司要制作小地图,搜索网上的文章没找到有什么小实例,=.=直接上步骤: 制作小地图步骤: 1. 人物头顶有一个面板呈现人物图标 2. 有一个摄像机在主角头顶!(Target Texture属性)把摄像机照到的物体渲染成一个2D贴图 3. 把贴图绑定到NGUI控件上显示 源码: http://yunpan.cn/cyPtUgn87kFpB  提取码 d51e

使用Unity制作小地图

1.新建场景,Create一个Plane 和一个Cube,让Cube在Plane之上. 2.在Assets面板中右键Create一个RenderTexture,改名为MimiMap,. 3.在Hierarchy面板中,create一个Camera,改名为 MimiMapCamera,在其Inspector面板中,将第二步创建的MimiMap 拖给 Target Texture. 修改MimiMapCamera的属性,将CullingMask(遮罩的层)改为UI层,Projection(投射类型)

Unity 小地图点击位置映射到地图实体位置(类似王者荣耀的小地图点击功能)

小地图自制功能就不多说了,我的小地图制作参考地址:https://www.youtube.com/watch?v=EeyZ2y2Jpz4 建议直接到地址中去看UGUI的小地图的制作,觉得还是讲得比较好的. 下面在参考地址的制作前提下做一个小地图点击位置映射到地图实体位置中去的功能. 准备工作: 搭建场景: 简单来说就是自己随意搭建一个场景,然后俯视将场景截图保存作为UI的Image图片当作小地图的背景图片(这样就不利用另一个摄像机通过RenderTexture来做背景了) UI的目录解析如下:

unity 小地图的制作

说到小地图,大家可能有些不是很了解,但是说到英雄联盟大家可能眼前一亮,这个我知道! Q:英雄联盟右下角的小地图看到了吗? A:有些人会说那是小地图吗? Q:是的. 只是他们做的太好了,看起来不觉得像小地图罢了!——所以相信团队的力量! 不扯了,言归正传,开始咱们的小地图学习了! 1,打开Unity 建一个空的工程,结构如下. 2,开始写脚本了. miniMap.cs 1 using UnityEngine; 2 using System.Collections; 3 4 public class

【Unity 3D】学习笔记二十九:游戏实例——简单小地图制作

任何的学习,光看不练是学不好的.所以这次就总结回顾下怎么制作MMROPG类游戏中的小地图.在MMROPG类游戏里,主角在游戏世界里走动时,一般在屏幕右上角都会有一个区域来显示当前游戏场景的小地图.主角在游戏世界里走动,小地图里代表着主角的小标记也会随之移动.那怎么实现咧? 首先需要确定两个贴图,第一个是右上角的小地图背景贴图,应该是从Y轴俯视向下截取主角所在的位置大地图.第二个就是主角的位置大贴图.在本例中,因为没有学习unity地图制作,所以地图用一个面对象代替,主角用立方体代替,使用GUI来

Unity3D学习笔记(二)小地图的制作(UGUI)

文章末尾有小地图制作完成的MiniMapDemo.unitypackage下载地址,使用Unity3d 5.3.4f1制作 一.创建一个Plane和Cube,调整合适位置,再创建一个Camera,重命名为MiniMapCamera,调整摄像机让其视野朝下,Projection为Orthographic,调整size到合适大小 二.创建Renderer Texture重命名为MiniMapTexture,并将MiniMapTexture拖拽至MiniMapCamera的Target Texture

Unity 小地图制作插件NJG MiniMap的简单使用

unity版本:4.5.1 NJG MiniMap版本:1.5 参考链接:http://blog.csdn.net/wuming22222/article/details/37526659,作者:CSDN SheldonCooper NJG MiniMap的下载链接很多,但是好像教程参考资料什么的很少,官网上面有份简单的介绍,不过是1.2版本的,而且是放在Google Doc上,会翻 墙的可以自己下载.这里给出CSDN的下载链接:http://download.csdn.net/detail/l