自用工具 Unity 小地图

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
/*
 *
 * 控制右上角小地图的操作
 */
public class MapShow : MonoBehaviour
{
    public GameObject PlayerBall;//定位玩家位置的毬
    public GameObject player;
    [Header("小地图/大地图")]
  public GameObject Map;
  public GameObject Map_B;
  [Header("展开/隐藏地图的按钮")]
  public Button MapBTN;

  public Button Map_B_Open;
  public Button Map_B_Close;
  //这个要根据分辨率修改
  private readonly Vector2 ScreenPos = new Vector2(1920, 1080);
  public bool IsShowing;//是否打开地图的状态

  [Header("传送点")] public Button[] ClickPoint;
  public GameObject[] JumpToTarget;
  private void Awake()
  {
    #region  监听
    MapBTN.onClick.AddListener(() =>
    {
        if (IsShowing)
        {//这个根据锚点与自身的相对方向要调整一下
            Map.transform.DOMove(new Vector3(1135f+ScreenPos.x/2, 308.8f+ScreenPos.y/2, 0), 2f);
        }
        else
        {
            Map.transform.DOMove(new Vector3(786f+ScreenPos.x/2, 308.8f+ScreenPos.y/2, 0), 2f);
        }
        MapBTN.transform.Rotate(new Vector3(0,0,180f));
        IsShowing = !IsShowing;
    });
    Map_B_Open.onClick.AddListener(() =>
    {
        Map_B.SetActive(true);
    });
    Map_B_Close.onClick.AddListener(() =>
    {
        Map_B.SetActive(false);
    });
    #endregion

    for (int i = 0; i < JumpToTarget.Length-1; i++)
    {
        int i1 = i;
        ClickPoint[i1].onClick.AddListener(()=>player.transform.position=JumpToTarget[i1].transform.position);
    }

  }

  private void Update()
  {
      PlayerBall.transform.position = new Vector3(player.transform.position.x, -23f, transform.position.z);
  }
}

效果:

(点击蓝色点可以传送) 

猜你喜欢

转载自blog.csdn.net/qq_58804985/article/details/126782705