Вторник, 26 Ноября 2024, 12:53

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Нужен совет как сделать сетку!
FennomДата: Четверг, 06 Декабря 2012, 22:02 | Сообщение # 1
был не раз
Сейчас нет на сайте
Здравствуйте!
Нужен ваш совет! Я делаю простенькую ртс игру и столкнулся с такой проблемой мне нужно программно с генерировать что то типа сетки как на картинке для определение возможных мест под строительство! Если конкретно то сетка должна строиться там где террайн ровный если есть неровности то там ее не генерируем.

Как это можно реализовать? Буду очень признателен за помощь.
KiraДата: Четверг, 06 Декабря 2012, 22:44 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
Fennom, само просто наверно накладывать текстуру, сетки на терейн. по поводу высоты, то смотрим у координату терейна. Можно накладывать меши и комбайнить их в 1 меш.
получить высоту можно, как TerrainData.GetHeight так и Лучом наверняка есть еще способы.
Самым лучшим считаю, создавать меш в виде сетки без поверхностей, и рендерить сами грани. Тогда не будет прозрачности, следовательно будет работать быстрее.


Unity3d разработчик на С#. Лучшее спасибо + в репу.
"Безумие: делать одно и то же снова и снова, и ждать при этом разных результатов".
"Человек, который никогда не ошибался никогда не пробовал ничего нового".
"Если человек может спокойно управлять автомобилем во время поцелуя красивой девушки, значит он уделяет поцелую недостаточно внимания”. Альберт Эйнштейн
NovatorvladДата: Пятница, 07 Декабря 2012, 05:00 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
Kira, предвкушаю вопрос "а как это сделать ?" cool

Девбложек
FennomДата: Пятница, 07 Декабря 2012, 07:57 | Сообщение # 4
был не раз
Сейчас нет на сайте
Quote (Kira)
Самым лучшим считаю, создавать меш в виде сетки без поверхностей

Спасибо за совет! Но мне нужно что то типа A*Pathfinding grid саму сетку рендерить не обязательно она нужна только для проверки можно ли здесь строить или нет.
Для лучшего понимания чего мне нужно опишу алгоритм: Жмем по кнопке строить пускаем луч в террайн проверяем попали ли мы в ячейку сетки или нет если да то перемещаем объект к левой верхней точки данной ячейки ну и проверяем сколько объект занимает ячеек вот как то так. Надеюсь так будет понятней. Хотя может Ваш совет именно то что мне и нужно.

Quote (Novatorvlad)
Kira, предвкушаю вопрос "а как это сделать ?" cool

Конечно я не прошу написать за меня рабочий скрипт но было бы полезно увидеть примитивный пример.

Еще в интернете нарыл, что как то можно сделать это через Projectors может кто делал?


Сообщение отредактировал Fennom - Пятница, 07 Декабря 2012, 08:06
andarkyДата: Пятница, 07 Декабря 2012, 11:37 | Сообщение # 5
старожил
Сейчас нет на сайте
где-то когда-то я видел пример:
там шарик такой в центре,
мышкой по нему водишь и он выпуклииться (как в Zbrush)
значит там как-то сетка деформируется.

Ссылку забыл, но где-то на компе есть исходники (для v.3.2)
в фришке работает



Моя страничка по дизайну
GameDev//Design//3D
Ютубчик
KiraДата: Пятница, 07 Декабря 2012, 13:56 | Сообщение # 6
заслуженный участник
Сейчас нет на сайте
Тогда даже проще будет. К примеру, ставим угол террана в точку (0,0). Допустим шаг сетки 1. Размер сетки 10.
Допустим луч вернул координаты (2.4f,4.6f,0).
И так z=0. значит уже вроде поверхность ровная.
т.е получаем
for(int x=0;x>10;x++)
for(int y=0;y>10;y++)// Сетка
Сетка.
if(x<=hit.x и x+1>=hit.x) Получили x позицию, проверяем ее по z, if(z==0) то проверим x+1(шаг);
тоже самое по у. если все 4ре точки в z==0 то все ровно.

Добавлено (07.12.2012, 13:54)
---------------------------------------------
Для юзабильности, можно при попадании в область отрисовывать, плэйн прозрачный с зеленным если ровно и красным если нет.

Добавлено (07.12.2012, 13:56)
---------------------------------------------

Quote (Fennom)
Еще в интернете нарыл, что как то можно сделать это через Projectors может кто делал?

через него вы только отрисуете сетку, вам логика нужна, то есть for и 2 координаты достаточно.


Unity3d разработчик на С#. Лучшее спасибо + в репу.
"Безумие: делать одно и то же снова и снова, и ждать при этом разных результатов".
"Человек, который никогда не ошибался никогда не пробовал ничего нового".
"Если человек может спокойно управлять автомобилем во время поцелуя красивой девушки, значит он уделяет поцелую недостаточно внимания”. Альберт Эйнштейн


Сообщение отредактировал Kira - Пятница, 07 Декабря 2012, 13:51
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг