Найти высоту карты при помощи мыши в Unity3D - PullRequest
0 голосов
/ 18 марта 2019

В моем проекте у меня есть вид сверху карты, созданной с картой высот и цветовой кодировкой.Я хочу, чтобы пользователи могли размещать лодки на карте, щелкая, куда они хотят, но только если они нажимают на воду.Есть ли способ сделать это?Не уверен, что я очень хорошо справился с объяснением, так что спросите, и я постараюсь уточнить.

РЕДАКТИРОВАТЬ: Исходя из ответа Совиута ниже, кажется, что лучший способ сделать то, что я хочу сделать, это разыгратьЛуч и проверьте расстояние, и сравните это, чтобы узнать, попадает ли он в воду или землю.До сих пор я делал это, основываясь на примере, который нашел здесь :

RaycastHit hit;
Ray downRay = new Ray(Vector3.down, Input.mousePosition);
Physics.Raycast(downRay, out hit);
Debug.Log(hit.distance);

Это возвращает расстояние, но значения не кажутся правильными.Это как-то связано с тем, как я помещаю числа в новый Рэй (...)?

1 Ответ

0 голосов
/ 18 марта 2019

Поскольку вы не предоставили ни одного примера того, что вы попробовали, этот ответ будет только общим подходом.

Вы бы не искали цвет пикселя у мыши, вы бы выбирали либо высоту карты высот, либо цвет по UV-координате на поверхности. Вы могли бы получить эту координату, бросив луч в пространство экрана, преобразовав его в мировое пространство для обнаружения столкновения, преобразовав положение столкновения в координаты UV, а затем сославшись на карту высот или карту цветов для значения в этой координате UV. Если высота достаточно низкая, чтобы считаться водой или цветом воды, поместите лодку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...