using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class map_smaller : MonoBehaviour
{
public RectTransform mapBackground;//小地图图片
public RectTransform img_main;//要移动的小目标
public Transform target01;//地图左上
public Transform target02;//地图右下
public Transform player;//移动的角色
private float lengthMap;//
private float widthMap;//
private float map2dlength;//
private float map2dwidth;//
void Start()
{
OnCalculationMap();
}
void Update()
{
OnMapUpdateCulation();
}
private void OnCalculationMap()//初始场景大小和小地图大小 不变调用一次即可
{
//3D场景中的长和宽
//Mathf.Abs求绝对值的 1-9 = -8 --》8
//9-1=8;--》8
lengthMap = Mathf.Abs(target01.position.x - target02.position.x);
widthMap = Mathf.Abs(target01.position.z - target02.position.z);
//2D UI上的地图长和宽
map2dlength = mapBackground.rect.height;
map2dwidth = mapBackground.rect.width;
}
private void OnMapUpdateCulation()
{
Transform main_plear = player.transform;
float playerX = Mathf.Abs(main_plear.position.x - target02.position.x);
float playerZ = Mathf.Abs(main_plear.position.z - target02.position.z);
float scaleX = playerX / lengthMap;
float scaleY = playerZ / widthMap;
float point2DX = map2dlength * scaleX - map2dlength / 2;
float point2DY = map2dwidth * scaleY - map2dwidth / 2;
img_main.anchoredPosition = new Vector2(point2DX, point2DY);
}
}
unity 小地图源码(无需计算)
最新推荐文章于 2024-03-08 10:17:59 发布