Для миникарты создал 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()
{
}
}
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 () {
}
}
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 () {
}
}