zoukankan      html  css  js  c++  java
  • Unity 制作RPG地图2(自己控制地图上图标)

    上一次用Unity摄像机方式实现了地图的制作,现在介绍另一种实现地图的方式: 自己通过代码实现小地图NCP图标的显示和隐藏

    制作地图的步骤:

            1. 根据游戏人物的3D坐标转换成2D平面坐标,根据距离显示和隐藏游戏的坐标

            2. 怪物实时判断与玩家的距离,小于到移动范围,就在小地图上创建Icon的显示

    注意事项:

    1. 人物移动前进和后退是(x,z)轴, 我们从游戏界面看到的图标是(x,y)轴

    image

    代码:

    小地图类:

    using UnityEngine;
    using System.Collections;
    
    
    /// <summary>
    /// 小地图
    /// </summary>
    public class MinMap : MonoBehaviour {
    
        public static MinMap _instance;
        public GameObject iconPrefab;       //小图标预设,根据不同的名字显示不同的图标
    
        void Awake() 
        {
            _instance = this;
        }
    
        /// <summary>
        /// 在小地图添加图标
        /// </summary>
        /// <param name="iconName"></param>
        /// <returns></returns>
        public GameObject AddIcon(string iconName) 
        {
            GameObject go = NGUITools.AddChild(this.gameObject,iconPrefab);
            go.GetComponent<UISprite>().spriteName = iconName;
            return go;
        }
    
    
    }

    Icon类: (在小地图上添加图标,交给怪物和NCP自身)

    using UnityEngine;
    using System.Collections;
    
    public class MinMapItems : MonoBehaviour {
    
        public string iconName;
        private GameObject minimapIconGO;
        private Transform minmapTrans;
        private Transform playerTrans;
    
        public float magnitudeX = 8;
        public float magnitudeZ = 7.5f;
        
        void Start() 
        {
            minimapIconGO = MinMap._instance.AddIcon(iconName);                         //将怪物图标初始化到小地图显示
            minmapTrans = minimapIconGO.transform;                                      //怪物的小图标
            playerTrans = GameObject.FindGameObjectWithTag("Player").transform;         //获取主角transfrom
    
        }
    
        void FixedUpdate() 
        {
            Vector3 offset = transform.position - playerTrans.position;
            minmapTrans.localPosition = new Vector3(offset.x,offset.z,0) * 8;
    
            //localPosition和position的区别
            
            
    
            //怪物超过一定范围,显示和隐藏地图图标
            if (Mathf.Abs(offset.x) >= magnitudeX || Mathf.Abs(offset.z) >= magnitudeZ)
            {
                minimapIconGO.SetActive(false);
            }
            else 
            {
                minimapIconGO.SetActive(true);
            }
    
            //Debug.Log(offset.z);
    
        }
    
        void OnDestroy() 
        {
            Destroy(this.minimapIconGO);
        }
    
    }

    源代码 :  http://yunpan.cn/cy8wW4eHQgHZH  提取码 3681

    如果你感兴趣,你可以把你妹妹介绍给我
  • 相关阅读:
    从Unity3D编译器升级聊起Mono
    RxJava系列6(从微观角度解读RxJava源码)
    RxJava系列5(组合操作符)
    RxJava系列4(过滤操作符)
    RxJava系列3(转换操作符)
    RxJava系列2(基本概念及使用介绍)
    RxJava系列1(简介)
    给 Android 开发者的 RxJava 详解
    深入浅出RxJava就这一篇就够了
    android非法字符的判定、表情符号的判定
  • 原文地址:https://www.cnblogs.com/plateFace/p/4216359.html
Copyright © 2011-2022 走看看