Перенос точки из одной плоскости в другую

Общие вопросы о Unity3D

Перенос точки из одной плоскости в другую

Сообщение LoneRay 24 апр 2019, 18:06

День добрый. Подскажите пожалуйста как перенести точку из поля Terrain (плоскость 1) с координатами x,y,z в объект имеющий форму квадрата (плоскость 2) с координатами x,y.

То есть вот у меня ходит персонаж и есть его координаты известен размер локации (плоская 8000х8000) и координаты персонажа надо перенести на навигационную карту у которой размер (91х91) при том что объект в этой карте имеет только x,y. Подскажите как можно проблему решить?
«Нужно делать так, как нужно. А как не нужно, делать не нужно!»
Аватара пользователя
LoneRay
UNец
 
Сообщения: 49
Зарегистрирован: 11 июн 2016, 11:31

Re: Перенос точки из одной плоскости в другую

Сообщение ~AvA~ 24 апр 2019, 18:19

Ну, можно воспользоваться гтовыми решениями для MiniMap например..
Не уверен, есть ли бесплатные решения, но всегда можно поискать! :)
Аватара пользователя
~AvA~
UNIверсал
 
Сообщения: 396
Зарегистрирован: 17 фев 2015, 13:09

Re: Перенос точки из одной плоскости в другую

Сообщение 1max1 24 апр 2019, 18:19

MapX = хPlayer / 8000 * 91;
MapY = zPlayer / 8000 * 91;
Естественно отсчет координат от нуля, если не от нуля, то надо добавлять оффсет к координатам игрока.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Перенос точки из одной плоскости в другую

Сообщение LoneRay 24 апр 2019, 18:25

~AvA~ писал(а):Ну, можно воспользоваться гтовыми решениями для MiniMap например..
Не уверен, есть ли бесплатные решения, но всегда можно поискать! :)

Нашёл примеры с миникартами, но тут одна проблема с моей стороны, у меня миникарта "отображает" весь размер карты и указывает позицию игрока, поэтому подход как MiniMap не пойдёт к сожалению. Пример я смотрел с Camera
«Нужно делать так, как нужно. А как не нужно, делать не нужно!»
Аватара пользователя
LoneRay
UNец
 
Сообщения: 49
Зарегистрирован: 11 июн 2016, 11:31

Re: Перенос точки из одной плоскости в другую

Сообщение LoneRay 24 апр 2019, 18:28

1max1 писал(а):MapX = хPlayer / 8000 * 91;
MapY = zPlayer / 8000 * 91;
Естественно отсчет координат от нуля, если не от нуля, то надо добавлять оффсет к координатам игрока.

Есть небольшое смещение(
https://1drv.ms/u/s!Ag79bYH4D5GimZBPUmu6aAafLIJQGg

Центр перса 4500х4500
Центр перса на миникарте 43,75х43,75
«Нужно делать так, как нужно. А как не нужно, делать не нужно!»
Аватара пользователя
LoneRay
UNец
 
Сообщения: 49
Зарегистрирован: 11 июн 2016, 11:31

Re: Перенос точки из одной плоскости в другую

Сообщение LoneRay 24 апр 2019, 18:38

1max1 писал(а):MapX = хPlayer / 8000 * 91;
MapY = zPlayer / 8000 * 91;
Естественно отсчет координат от нуля, если не от нуля, то надо добавлять оффсет к координатам игрока.

Типо offset = Player.transform.position.last-Player.transform.position.old;
MapX и MapY + offset;

или я что-то не так понимаю?
«Нужно делать так, как нужно. А как не нужно, делать не нужно!»
Аватара пользователя
LoneRay
UNец
 
Сообщения: 49
Зарегистрирован: 11 июн 2016, 11:31

Re: Перенос точки из одной плоскости в другую

Сообщение 1max1 24 апр 2019, 18:41

Может ты с размерами напутал, может канвас не так отображает... :-?
Оффсет, в том смысле что у тебя карта должна начинаться в точке (0,0,0). То есть ее левый нижний угол должен быть в нулевой координате, если же нет, то либо поставь ее туда, либо придется делать прибавление к координате игрока.
MapX = (хPlayer + offsetX) / 8000 * 91;
MapY = (zPlayer + offsetZ) / 8000 * 91;
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Перенос точки из одной плоскости в другую

Сообщение LoneRay 24 апр 2019, 18:46

1max1 писал(а):Может ты с размерами напутал, может канвас не так отображает... :-?
Оффсет, в том смысле что у тебя карта должна начинаться в точке (0,0,0). То есть ее левый нижний угол должен быть в нулевой координате, если же нет, то либо поставь ее туда, либо придется делать прибавление к координате игрока.
MapX = (хPlayer + offsetX) / 8000 * 91;
MapY = (zPlayer + offsetZ) / 8000 * 91;

Миникарта с 0-91, а вот локация с 1000-9000
«Нужно делать так, как нужно. А как не нужно, делать не нужно!»
Аватара пользователя
LoneRay
UNец
 
Сообщения: 49
Зарегистрирован: 11 июн 2016, 11:31

Re: Перенос точки из одной плоскости в другую

Сообщение 1max1 24 апр 2019, 18:48

а вот локация с 1000-9000

MapX = (хPlayer - 1000) / 8000 * 91;
MapY = (zPlayer - 1000) / 8000 * 91;
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Перенос точки из одной плоскости в другую

Сообщение LoneRay 24 апр 2019, 18:49

1max1 писал(а):Может ты с размерами напутал, может канвас не так отображает... :-?
Оффсет, в том смысле что у тебя карта должна начинаться в точке (0,0,0). То есть ее левый нижний угол должен быть в нулевой координате, если же нет, то либо поставь ее туда, либо придется делать прибавление к координате игрока.
MapX = (хPlayer + offsetX) / 8000 * 91;
MapY = (zPlayer + offsetZ) / 8000 * 91;

Попробовал написать так offset(1000) и вроде норм, но вот чуть чуть смещение заметно с центра
var MapX = (transform.position.x - 1000) / 8000 * 91;
var MapY = (transform.position.z - 1000) / 8000 * 91;
UiMap.GetComponent<RectTransform>().anchoredPosition = new Vector2(MapX, MapY);
https://1drv.ms/u/s!Ag79bYH4D5GimZBV3W7CnukrnzXNbQ
«Нужно делать так, как нужно. А как не нужно, делать не нужно!»
Аватара пользователя
LoneRay
UNец
 
Сообщения: 49
Зарегистрирован: 11 июн 2016, 11:31

Re: Перенос точки из одной плоскости в другую

Сообщение 1max1 24 апр 2019, 18:55

anchoredPosition... Не уверен что это правильно.
Настрой якорь в левый нижний угол и не трогай больше.
Координаты задавай так:
Синтаксис:
Используется csharp
UiMap.GetComponent<RectTransform>().position = new Vector2(MapX, MapY);
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Перенос точки из одной плоскости в другую

Сообщение LoneRay 24 апр 2019, 19:46

1max1 писал(а):anchoredPosition... Не уверен что это правильно.
Настрой якорь в левый нижний угол и не трогай больше.
Координаты задавай так:
Синтаксис:
Используется csharp
UiMap.GetComponent<RectTransform>().position = new Vector2(MapX, MapY);

Эх, не выходит(
Якорь Map нижний правый угол по UI, MapObject(UiMap) нижний левый по Map и всё равно почему центр смещён, по краям вроде как более менее а вот центр почему то смещён и хз чё делать(

Даже меняя на левый нижний всё равно так же что с position что с anchoredPosition (
«Нужно делать так, как нужно. А как не нужно, делать не нужно!»
Аватара пользователя
LoneRay
UNец
 
Сообщения: 49
Зарегистрирован: 11 июн 2016, 11:31

Re: Перенос точки из одной плоскости в другую

Сообщение LoneRay 24 апр 2019, 20:12

Сделал короче. Вот что вышло

Синтаксис:
Используется csharp
var playerP = transform.position;
var playerS = transform.localScale;
var mapX = (playerP.x - 1000 - playerS.x) / 8000 * 97;
var mapY = (playerP.z - 1000 - playerS.x) / 8000 * 97;
UiMap.GetComponent<RectTransform>().anchoredPosition = new Vector2(mapX, mapY);


Спасибо всем кто помог)
«Нужно делать так, как нужно. А как не нужно, делать не нужно!»
Аватара пользователя
LoneRay
UNец
 
Сообщения: 49
Зарегистрирован: 11 июн 2016, 11:31


Вернуться в Общие вопросы

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

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