unity 小地图源码(无需计算)

 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);
     }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卿屿­­­­­­­-轻尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值