Как задать RectTransform для умЕньшенной копии камеры (2D)?

Графический интерфейс пользователя

Как задать RectTransform для умЕньшенной копии камеры (2D)?

Сообщение scolfield 30 янв 2017, 23:49

Всем добрый день!
Для миникарты создал Canvas, в нем один Image для рамки карты, второй для мини спрайта самой карты, третий для рамки камеры. На последний завесил скрипт. Проблема в том, что рамка камеры на мини карте больше чем сама камера. Как можно решить проблему? Спасибо

Ниже задаю размеры мини карты (здесь как мне кажется все отрабатывает корректно):

Синтаксис:
Используется csharp
    using UnityEngine;
    using System.Collections;

    public class mm_Background : MonoBehaviour
    {

        // Use this for initialization
        void Start()
        {
            GameObject Level_GObj = GameObject.FindWithTag("Level");
            if (Level_GObj.GetComponent<Load_Level>().level_width > Level_GObj.GetComponent<Load_Level>().level_height)//если ширина больше высоты, то ширину вписываем в канвас карты, а высоту рассчитываем
                GetComponent<RectTransform>().sizeDelta = new Vector2(GetComponent<RectTransform>().sizeDelta.x, Screen.currentResolution.height / (Screen.currentResolution.width / GetComponent<RectTransform>().sizeDelta.x));
            else//если наоборот, то высоту вписываем в канвас карты, а ширину  рассчитываем
                GetComponent<RectTransform>().sizeDelta = new Vector2(Screen.currentResolution.width / (Screen.currentResolution.height / GetComponent<RectTransform>().sizeDelta.y), GetComponent<RectTransform>().sizeDelta.y);
        }

        // Update is called once per frame
        void Update()
        {

        }
    }



далее определю размеры миникамеры, и тут, как я упомянул выше, получаются диспропорции:

Синтаксис:
Используется csharp
    using UnityEngine;
    using System.Collections;

    public class mm_MapIcon : MonoBehaviour {

        private RectTransform rect_mm_cam;//прямоугольник мини ножа
        private GameObject MinM_GObj;//объект Canvas мини карты
        private GameObject Level_data_GObj;

        // Use this for initialization
        void Start()
        {
            rect_mm_cam = GetComponent<RectTransform>();//определяем прямоугольник мини камеры
            Level_data_GObj = GameObject.FindWithTag("Level_data");//находим уровень для определения масштаба
            MinM_GObj = GameObject.FindWithTag("MinMap_Background");//находим мини карту для определения масштаба


            rect_mm_cam.sizeDelta = new Vector2(Screen.width * MinM_GObj.GetComponent<RectTransform>().sizeDelta.x/ Level_data_GObj.GetComponent<SpriteRenderer>().sprite.rect.width,
                                                Screen.height * MinM_GObj.GetComponent<RectTransform>().sizeDelta.y/ Level_data_GObj.GetComponent<SpriteRenderer>().sprite.rect.height);
        }

        // Update is called once per frame
        void Update () {
        }
    }
scolfield
UNец
 
Сообщения: 4
Зарегистрирован: 31 май 2016, 23:00

Вернуться в uGUI

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1