unity制作小地图简单,用rawImage 再来个摄像机就行

但是现在一个需求就是地图上一些东西要加上图标,图标会随着地图物体的移动而移动

然后去网上下载了个小地图插件  UGUI MiniMap(蛮牛可下)  但是他比较复杂,在研究了下他的代码,实现了一套自己的  简单小地图。

主要参考他的 bl_MiniMapItem 脚本

第一步:搭建好小地图

RawImage就是显示小地图的render texture

Player作为子物体为玩家的图标

FPSController为玩家

挂上脚本 CtrlMove.CS

做好关联

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; public class CtrlMove : MonoBehaviour { public RectTransform RectRoot;//rawImage
public Camera mapCamera;//小地图的摄像机
private Vector3 position;//只是一个变量,存储一些值
public GameObject cacheItem;//ui图标
private Image Graphic = null;//Image组件 /// <summary>
/// 取自身坐标的x z坐标
/// </summary>
public Vector3 TargetPosition
{
get
{
return new Vector3(transform.position.x, , transform.position.z);
}
} // Use this for initialization
void Start () {
Graphic = cacheItem.GetComponent<Image>();//图标
Graphic.GetComponent<RectTransform>().anchoredPosition = Vector2.zero;//重置xy坐标
} // Update is called once per frame
void Update () {
RectTransform rt = Graphic.GetComponent<RectTransform>();
Vector3 CorrectPosition = TargetPosition;//自己的x z坐标
Vector2 vp2 = mapCamera.WorldToViewportPoint(CorrectPosition);//将三维物体的世界坐标转换为视口坐标
position = new Vector2((vp2.x * RectRoot.sizeDelta.x) - (RectRoot.sizeDelta.x * 0.5f), (vp2.y * RectRoot.sizeDelta.y) - (RectRoot.sizeDelta.y * 0.5f));
//小地图的图标会根据实际物体的图标移动而移动
rt.anchoredPosition = position;
}
}

其实原理就是把实际物体的xz坐标 用WorldToViewportPoint转换成小地图坐标

即可实现这种功能

UGUI MiniMap 插件还可以继续研究下,里面还是有很多东西可取的,他的物体直接挂上一个bl_MiniMapItem脚本,会在小地图上自动生成一个小图标,和物体进行关联,这样物体动,小地图图标就会动,很方便

unity小地图上的动态图标的更多相关文章

  1. 使用Unity创造动态的2D水体效果

    者:Alex Rose 在本篇教程中,我们将使用简单的物理机制模拟一个动态的2D水体.我们将使用一个线性渲染器.网格渲染器,触发器以及粒子的混合体来创造这一水体效果,最终得到可运用于你下款游戏的水纹和 ...

  2. [UE4]Throbber,横向动态图标

    一.Throbber跟Circular Throbber一样,都是用来提示玩家后台有数据正在加载中. 二.Throbber是横向显示动态图标.其他方面跟Circular Throbber一样.Circ ...

  3. Layui 解决动态图标不动的问题

    <i class="layui-icon layui-icon-face-smile" style="color: red; font-size: 100px;&q ...

  4. Unity Lightmap动态加载研究

    什么情况下需要Lightmap? 移动平台上目前暂时还不能开实时光影效果,会卡成幻灯片.所以就需要将光影烘焙到贴图上. 什么情况下需要动态加载Lightmap? 1.当项目抛弃了Unity的多场景模式 ...

  5. Unity中 动态加载 Resources.Load()和Asset Bundle 的区别

    版权声明:本文为博主原创文章,未经博主允许不得转载. 初学Unity的过程中,会发现打包发布程序后,unity会自动将场景需要引用到的资源打包到安装包里,没有到的不会跟进去.我们在编辑器里看到的Ass ...

  6. 【转】如何使用Unity创造动态的2D水体效果

    原文:http://gamerboom.com/archives/83080 作者:Alex Rose 在本篇教程中,我们将使用简单的物理机制模拟一个动态的2D水体.我们将使用一个线性渲染器.网格渲染 ...

  7. Unity 3D动态修改Shader状态,使物体透明等等

    Unity动态改Shader状态透明 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...

  8. Unity 中动态修改碰撞框(位置,大小,方向)

    在Unity中,玩家处于不同的状态,要求的碰撞框的 位置/大小/方向 会有所改变,怎么动态的修改碰撞框呢? 下面是Capsure Collider(胶囊体)的修改: CapsuleCollider.d ...

  9. 使用Unity实现动态2D水效果

    http://forum.china.unity3d.com/thread-16044-1-1.html 在这片教程里面我们将会用简单的物理效果来模拟动态的2D水效果.我们将会使用Line Rende ...

随机推荐

  1. GetFileVersionInfoSize函数确定操作系统是否可以检索指定文件的版本信息

    GetFileVersionInfoSize函数 -------------------------------------------------- ------------------------ ...

  2. Retrofit+Rxjava observable转javabean失败

    报错提示: Caused by: java.lang.IllegalArgumentException: Unable to create call adapter for io.reactivex. ...

  3. [Erlang14]怎样模拟节点互连后的各种失败情况?

    情景: 当节点群互连时,会通过心跳包检查所连接节点是不是连接正常,这个心跳时间默认为60s,可以通过 net_kernel:set_net_ticktime(600). 来重设这个时间值,怎么测试? ...

  4. Service Worker 缓存文件处理

    交代背景 前段时间升级了一波Google Chrome,发现我的JulyNovel站点Ctrl+F5也刷新不了,后来发现是新的Chrome已经支持Service Worker,而我的JulyNovel ...

  5. 原创:各种normalize函数实现的性能和精度大比拼

    ///////////////////////////////////////////////////////////////////////// // // Performance benchmar ...

  6. ajax 多个setInterval进行ajax请求的页面长时间打开会出现页面卡死问题

     多个setInterval进行ajax请求的页面长时间打开会出现页面卡死问题 浏览器的渲染(UI)线程和js线程是互斥的,在执行js耗时操作时,页面渲染会被阻塞掉.当我们执行异步ajax的时候没有问 ...

  7. 重新理解javascript回调函数

    把函数作为参数传入到另一个函数中.这个函数就是所谓的回调函数 经常遇到这样一种情况,某个项目的A层和B层是由不同的人员协同完成.A层负责功能funA,B层负责funcB.当B层要用到某个模块的数据,于 ...

  8. eclipse installer 安装的新版本 eclipse 导入旧版本 eclipse 插件

    打开旧版本eclipse,选择File -> Export... -> Install -> Installed Software Items to File,点击Next 点击Se ...

  9. python获取IP位置来源

    import requests import IPy def get_location(ip): url = 'https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2D ...

  10. Eclipse无法正常创建android工程解决方法!

    我最近升级了安卓的SDK,升级后发现无法在Eclipse中创建android工程了,创建的工程完毕后,没有自动生成这个工程的activity和对应的布局文件,上网搜索一番,最后终于解决了.可能是升级后 ...