using System.Collections;
using System.Collections.Generic;
using UnityEngine;
///
/// 地图坐标转换工具
///
public static class MapHelper
{
static bool hasInit;
static Vector2 terrainSize;
static Vector2 mapSize;
///
/// 地形/地图的
///
public static float mapScale;
//static Vector2
public static void InitHelper(Vector2 terrainSize,Vector2 mapSize)
{
hasInit = true;
MapHelper.terrainSize = terrainSize;
MapHelper.mapSize = mapSize;
mapScale = terrainSize.x / mapSize.x;
}
public static Vector3 GetWorldPosFromAnchPos(Vector2 anchoredPos)
{
if (!hasInit)
{
Debug.LogError("未初始化地图数据无法转换");
return Vector3.zero;
}
Vector3 worldPos = new Vector3(anchoredPos.x + mapSize.x / 2, 0, anchoredPos.y + mapSize.x / 2) * mapScale;
worldPos.y = Terrain.activeTerrain.SampleHeight(worldPos);//获取与地形对应点的世界坐标高度3
return worldPos;
}
//
/// 根据世界坐标获取地图锚点坐标 地形必须是正方形 长方形需修改该方法
///
///
/// 返回以地图中心为锚点的锚点位置
public static Vector2 GetAnchorPostionFromWorld(Vector3 worldPos)
{
if (!hasInit)
{
Debug.LogError("未初始化地图数据无法转换");
return Vector2.zero;
}
return new Vector2(worldPos.x - terrainSize.x / 2, worldPos.z - terrainSize.y / 2) / mapScale;
}
///
/// 计算物体尺寸在地图上的像素点
///
/// 单位M
/// 像素点
public static float GetPixelFromSize(float size)
{
if (!hasInit)
{
Debug.LogError("未初始化地图数据无法转换");
return 0;
}
return size/ mapScale;
}
public static void Clear()
{
hasInit = false;
}
}