您的位置:首页 > 移动开发 > Unity3D

Unity3D 小地图 (1) 等比例映射

2018-03-31 17:32 633 查看



在一些地图比较小的游戏还有MOBA游戏中,小地图是通过等比例映射的方式实现的,有些人在进行开发游戏的时候,是通过另一个摄像机渲染图片,实时同步在小地图上的,但这种做法十分消耗性能且功能拓展性很差, 是不推荐使用的。

根据需求进行分析:

1.获取角色在地形上的相对位置坐标。    角色相对地形位置=角色世界坐标-地形世界坐标
2.获取角色在地形上的比例位置,以Vector2(x,z)的形式存储。    角色在地形上的比例 = 相对地形位置/地形长宽
3.比例同步到小地图上,设置地图的RectTransform    小地图位置 = 小地图长宽*比例using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MipMapSyn : MonoBehaviour {
//小地图场景图
Transform mipMapImage;
//小地图中的人物位置
Transform playerImage;
//场景中人物的位置
Transform playerTrans;
//地形
Terrain terrain;
//小地图的尺寸
Vector2 mipMapSize;
//等比例映射后角色在小地图的位置
Vector2 position;
//人物相对于地形的坐标
Vector3 localPos;

float rateX, rateY, posX, posY;

void Start()
{
mipMapImage = GameObject.Find("BackGround").transform;
playerImage = GameObject.Find("PlayerImage").transform;
playerTrans = GameObject.Find("Cube").transform;
terrain = GameObject.Find("Terrain").GetComponent<Terrain>();
mipMapSize = mipMapImage.GetComponent<RectTransform>().sizeDelta;
}

void Update()
{
PlayerRate();
MipMapWave();
}
//角色在地形上的比例
public void PlayerRate()
{
localPos = playerTrans.position - terrain.transform.position;
rateX = localPos.x / terrain.terrainData.size.x;
rateY = localPos.z / terrain.terrainData.size.z;
}

public void MipMapWave()
{
posX = mipMapSize.x * rateX;
posY = mipMapSize.y * rateY;
position.x = posX;
position.y = posY;
playerImage.localPosition = position;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Unity 小地图 MipMap