unity小地图上的动态图标
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小地图上的动态图标的更多相关文章
- 使用Unity创造动态的2D水体效果
者:Alex Rose 在本篇教程中,我们将使用简单的物理机制模拟一个动态的2D水体.我们将使用一个线性渲染器.网格渲染器,触发器以及粒子的混合体来创造这一水体效果,最终得到可运用于你下款游戏的水纹和 ...
- [UE4]Throbber,横向动态图标
一.Throbber跟Circular Throbber一样,都是用来提示玩家后台有数据正在加载中. 二.Throbber是横向显示动态图标.其他方面跟Circular Throbber一样.Circ ...
- Layui 解决动态图标不动的问题
<i class="layui-icon layui-icon-face-smile" style="color: red; font-size: 100px;&q ...
- Unity Lightmap动态加载研究
什么情况下需要Lightmap? 移动平台上目前暂时还不能开实时光影效果,会卡成幻灯片.所以就需要将光影烘焙到贴图上. 什么情况下需要动态加载Lightmap? 1.当项目抛弃了Unity的多场景模式 ...
- Unity中 动态加载 Resources.Load()和Asset Bundle 的区别
版权声明:本文为博主原创文章,未经博主允许不得转载. 初学Unity的过程中,会发现打包发布程序后,unity会自动将场景需要引用到的资源打包到安装包里,没有到的不会跟进去.我们在编辑器里看到的Ass ...
- 【转】如何使用Unity创造动态的2D水体效果
原文:http://gamerboom.com/archives/83080 作者:Alex Rose 在本篇教程中,我们将使用简单的物理机制模拟一个动态的2D水体.我们将使用一个线性渲染器.网格渲染 ...
- Unity 3D动态修改Shader状态,使物体透明等等
Unity动态改Shader状态透明 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...
- Unity 中动态修改碰撞框(位置,大小,方向)
在Unity中,玩家处于不同的状态,要求的碰撞框的 位置/大小/方向 会有所改变,怎么动态的修改碰撞框呢? 下面是Capsure Collider(胶囊体)的修改: CapsuleCollider.d ...
- 使用Unity实现动态2D水效果
http://forum.china.unity3d.com/thread-16044-1-1.html 在这片教程里面我们将会用简单的物理效果来模拟动态的2D水效果.我们将会使用Line Rende ...
随机推荐
- Nginx根据用户请求的不同参数返回不同的json值
用户请求url:http://localhost:8000/getconfig?v=1.03.01,根据参数v=1.03.01或者其他的值返回不同的json值.如果用户请求不带该参数,则返回默认的js ...
- DLL用def定义文件来导出重载函数(转)
动态链接库DLL_Sample.dll DLL_Sample.h:#ifdef TEST_API# define TEST_API _declspec(dllexport)#else# define ...
- jmeter - 命令行方式运行
命令格式: jmeter -n -t <testplan filename> -l <listener filename> 参数说明: -n 非 GUI 模式 -> 在非 ...
- django+echarts
思路: 统一返回数据类型为json,然后前端发起Ajax请求后台数据接口 views.py def count_blog(request): # 下面等价于:select distinct auth, ...
- django静态文件路径配置
在settings.py中加入 STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static') ] 即可在html中引用该目录下的静态文件 <!DOCT ...
- OCP 12c最新考试原题及答案(071-4)
4.(4-11) choose two:View the Exhibit and examine the data in the PRODUCT_INFORMATION table.Which two ...
- 【转】C#具名参数和可选参数
源地址:https://www.cnblogs.com/similar/p/5006705.html 另:可选参数的一个陷阱 参考:https://www.cnblogs.com/still-wind ...
- [Maven实战-许晓斌]-[第二章]-2.5 Eclipse上面安装Maven插件 m2eclipse
Eclipse上面安装Maven插件 m2eclipse --需要特别指出的是,越来越多的最新的Eclipse版本自带Maven m2e http://m2eclipse.sonatype.org/s ...
- 【后缀数组之height数组】
模板奉上 int rank[maxn],height[maxn]; void calheight(int *r,int *sa,int n) { ; ;i<=n;i++) rank[sa[i]] ...
- 洛谷P2462 [SDOI2007]游戏(哈希+最长路)
题面 传送门 题解 我们把字符的出现次数哈希起来,然后把每个点向能在它之后的点连边.那么这显然是一个\(DAG\),直接求最长路就行了 //minamoto #include<bits/stdc ...