xx88

排列三组六复式中奖表: Unity 等比映射小地图

排列三2014079期正版藏机图 www.d0po.cn 热度 5537 2018-6-29 11:03 |个人分类:unity3d

等比映射小地图

其实等比映射小地图非常简单,而且特别节省性能,使用第二摄像机+Rendertexture方式实现小地图,操作起来是简单,但是相对来说它的性能消耗也很大,对于开发人员来说,一定要做到控制性能的优化,才能让自己项目的体验更加流畅,更加吸引人!

闲话少说上代码


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

public class MiniMap : MonoBehaviour {
    /// <summary>
    /// 大地型对象
    /// </summary>
    public GameObject Plane;
    /// <summary>
    /// 玩家对象
    /// </summary>
    public GameObject Player;
    /// <summary>
    /// 小地图贴图
    /// </summary>
    public Texture MapTexture;
    /// <summary>
    /// 小地图玩家贴图
    /// </summary>
    public Texture PlayerTexture;
    /// <summary>
    /// 大地型宽度
    /// </summary>
    private float MaxMapWidth;
    /// <summary>
    /// 大地型高度
    /// </summary>
    private float MaxMapHeight;
    /// <summary>
    /// 玩家在小地图的位置宽度
    /// </summary>
    private float MinMapWidth;
    /// <summary>
    /// 玩家在小地图的位置高度
    /// </summary>
    private float MinMapHeight;
    /// <summary>
    /// 大地图默认宽度
    /// </summary>
    private float MaxMapRealyWidth;
    /// <summary>
    /// 大地图默认高度
    /// </summary>
    private float MaxMapRealyHeight;
    /// <summary>
    /// 玩家当前在地图中的宽度
    /// </summary>
    private float PlayerInMapWidth;
    /// <summary>
    /// 玩家当前在地图中的高度
    /// </summary>
    private float PlayerInMapHeight;

    private void Start()
    {
        MaxMapRealyWidth = Plane.GetComponent<MeshFilter>().mesh.bounds.size.x;
        MaxMapRealyHeight = Plane.GetComponent<MeshFilter>().mesh.bounds.size.z;
        //得到大地图高度缩放地理
        float scal_z = Plane.transform.localScale.z;
        MaxMapRealyHeight = MaxMapRealyHeight * scal_z;
        //得到大地图高度缩放地理
        float scal_x = Plane.transform.localScale.x;
        MaxMapRealyWidth = MaxMapRealyWidth * scal_x;
        Check();
    }

    private void FixedUpdate()
    {
        Check();
    }

    private void OnGUI()
    {
        GUI.DrawTexture(new Rect(Screen.width - MapTexture.width/4, 0, MapTexture.width/4, MapTexture.height/4), MapTexture);
        GUI.DrawTexture(new Rect(MinMapWidth, MinMapHeight, 20, 20), PlayerTexture);
    }

    void Check()
    {
        //根据比例计算小地图“主角”的坐标
        MinMapWidth = (MapTexture.width * Player.transform.position.x/ MaxMapRealyWidth) + ((MapTexture.width /4 / 2) - (20 / 2)) + (Screen.width - MapTexture.width/4);
        MinMapHeight = MapTexture.height/4 - ((MapTexture.height/4 * Player.transform.position.z / MaxMapRealyHeight) + (MapTexture.height / 4/ 2 + 30));
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88

其中有四个需要拖拽的Public的游戏对象 
plane —-> 就是你的地形 
player —-> 就是你的主角 
MapTexture —-> 就是小地图纹理 
playerTexture —-> 就是代表主角的纹理 
计算原理 
1.首先计算小地图的位置 
小地图假设放到右上角,那么小地图的位置起点就应该是屏幕宽度减去小地图本身的宽度,高就是0 
2.其次计算玩家纹理在小地图上的位置 
我们就拿玩家在场景的左下角出生为例,那么玩家在小地图上也应该是在小地图的左下角才是正确的,首先先把玩家放到小地图的左下角,那么玩家在小地图的x应该是屏幕宽度减去小地图宽度,y应该是小地图的高度,第一步完成,第二步如果玩家移动,那么小地图上玩家也要动,怎么动是需要计算的,首先求出小地图和大地图的比例,然后乘上玩家的x,z就的到了玩家应该在小地图上移动的x,y;


  • 您访问的页面找不回来了 2019-04-07
  • 五莲科技局以“三大”助力动能转换 2019-04-07
  • 匹夫有责之一百一十二—道义大义的博客—强国博客—人民网 2019-03-30
  • 守住青山不放松 护好绿水不辞难——在渝全国人大代表聚焦“共抓大保护、不搞大开发”专题调研记略 2019-03-28
  • 经营者要想“我心换你心”,就要未雨绸缪,让不诚信的诱惑少一点,如此才能在市场中生存下来。反过来说,承担不起亏损就关门歇业,是否也是一种不诚信呢? 2019-03-21
  • 追风上市公司“跌落神坛”-热门标签-华商网数码 2019-03-21
  • 文化艺术交易场所沙龙第一期活动在京顺利举行 2019-03-16
  • 看把你高兴的屁颠屁颠的,光有赞有什么用?我给你个货真价实的 [大红包]。 2019-03-16
  • 候选企业:中国石油呼和浩特石化公司 2019-02-22
  • 我国纳米核心技术取得重大突破 2019-02-22
  • 北京:端午节民俗地图  小枣粽——竹叶红枣糯糯情  2019-01-26
  • 机器人送快递将在西安试点 识别红绿灯还能“车让人” 2019-01-26
  • 首批限竞房正式入市 戳三大盘看详情! ——凤凰网房产北京 2018-12-09
  • 世界杯频爆冷门网友大呼“天台见”!警方:不要冲动,不要跳楼 2018-08-21
  • 始终如一的是:美国优先。 2018-08-21
  • 728| 953| 41| 626| 588| 692| 480| 784| 228| 446|