您当前的位置: 首页 >  游戏

CoderZ1010

暂无认证

  • 3浏览

    0关注

    168博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Unity 通过等比例换算实现游戏中小地图

CoderZ1010 发布时间:2021-10-25 21:32:28 ,浏览量:3

小地图可以通过两种方式实现:

一、通过相机渲染方式实现:

        在Project窗口中右键创建Render Texture资产,使用一个相机以俯视视角渲染地面,将Target Texture属性设为创建的Render Texture,同时新建RawImage将其Texture属性也设为同一张Render Texture。

 

 

二、通过等比例换算实现:

原理如下: 

        水平比例 = 地形长度 / 小地图Image的长度       

        垂直比例 = 地形宽度 / 小地图Image的宽度

        以地形左下角作为基准点

        x = 人物位置与基准点的水平距离

        y = 人物位置与基准点的垂直距离

        人物在小地图中的位置(anchoredPosition) = new Vector2(x / 水平比例, y / 垂直比例)

using UnityEngine;

public class MiniMap : MonoBehaviour
{
    //基准点位置
    [SerializeField] private Transform basePoint;
    //人物位置
    [SerializeField] private Transform target;
    //地形宽度
    [SerializeField] private float terrainWidth;
    //地形长度
    [SerializeField] private float terrainLength;
    //小地图宽度
    [SerializeField] private float miniMapWidth;
    //小地图长度
    [SerializeField] private float miniMapLength;

    //水平比例
    private float horizontalRate;
    //垂直比例
    private float verticalRate;

    private RectTransform rt;

    private void Start()
    {
        rt = GetComponent();
        horizontalRate = terrainLength / miniMapLength;
        verticalRate = terrainWidth / miniMapWidth;
    }

    private void Update()
    {
        float x = Mathf.Abs((target.position - basePoint.position).x);
        float y = Mathf.Abs((target.position - basePoint.position).z);
        rt.anchoredPosition = new Vector2(x / horizontalRate, y / verticalRate) - rt.rect.size * .5f;
    }
}

 

    人物图标Image的Anchors、Pivot均设为0,此时图标以左下角为基准点,所以为了对应中心位置,需要减去图标大小一半的偏移量。

rt.anchoredPosition = new Vector2(x / horizontalRate, y / verticalRate) - rt.rect.size * .5f;

 欢迎关注公众号 “当代野生程序猿”

关注
打赏
1653184800
查看更多评论
立即登录/注册

微信扫码登录

0.1616s