zoukankan      html  css  js  c++  java
  • 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, 0, 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脚本,会在小地图上自动生成一个小图标,和物体进行关联,这样物体动,小地图图标就会动,很方便

  • 相关阅读:
    SDN原理 OpenFlow协议 -3
    SDN原理 OpenFlow协议 -2
    蓝桥杯----特殊的回文
    hdu-4513吉哥系列故事——完美队形II--最长回文
    蓝桥杯: 基础练习 十六进制转八进制
    母函数模板核心
    杭电ACM hdu 2079 选课时间 (模板)
    杭电ACM hdu 1398 Square Coins
    求用1g、2g、3g的砝码(每种砝码有无穷多个)称出10g的方案有几种
    有1克、2克、3克、4克的砝码各一枚,能称出哪几种重量?
  • 原文地址:https://www.cnblogs.com/sanyejun/p/9185103.html
Copyright © 2011-2022 走看看