Гексагональная сетка...

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Гексагональная сетка...

Сообщение Fielder 29 ноя 2012, 21:34

И так имеем 3д модель гексагона -> кидаю его в префаб. Далее создаю Си шарп скрипт кидаю его на Main Camera
Синтаксис:
Используется csharp
    private int[,] Massiv = new int[20, 8];
    public Transform prefab;
        void Start () {
        transform.position = new Vector3(9.187508f, 3.407779f, -1.772537f);
        for (int i = 0; i < Massiv.GetLength(0); i++)
        {
            for (int j = 0; j < Massiv.GetLength(1); j++)
            {
                Massiv[i, j] = 1;
                if (Massiv[i, j] == 1)
                {
                    Instantiate(prefab, new Vector3(i, 0, j), Quaternion.identity);
                   
                }
            }
        }
        }
       


получается
Изображение

Кто подскажет идею как сместить гексагоны и сделать их плотнее друг другу,чтоб получилось что-то похожее на гексагоновую сетку. Желательно примерчик на шарпе(кому не жалко).
Приветствуются критика и указание истинного пути. ;)
Fielder
UNец
 
Сообщения: 6
Зарегистрирован: 14 июл 2012, 03:02

Re: Гексагональная сетка...

Сообщение Woolf 29 ноя 2012, 22:07

Ну так очевидно же )
Нечетные префабы ставишь без смещения, четные, со смещением по вертикальной оси. Подбираешь смещение таким образом, чтобы грани сошлись.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: Гексагональная сетка...

Сообщение TexeL 29 ноя 2012, 22:31

Синтаксис:
Используется csharp
pub... float vertDelta;
pub... float horizDelta;
.....


if(i % 2 != 0) {vertDelta = 0;}

Instantiate(prefab, new Vector3(i+horizDelta, 0, j+vertDelta), Quaternion.identity);
 
ИзображениеИзображение
Аватара пользователя
TexeL
UNITрон
 
Сообщения: 244
Зарегистрирован: 15 ноя 2009, 20:57
  • Сайт

Re: Гексагональная сетка...

Сообщение waruiyume 29 ноя 2012, 22:37

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

public class NewBehaviourScript : MonoBehaviour
{
    public GameObject pref;
    public int xCount = 20;
    public int zCount = 15;

    private void Start()
    {
        for (int x = 0; x < xCount; x++)
        {
            for (int z = 0; z < zCount; z++)
            {
                Instantiate(pref,
                            new Vector3(x*0.866f + ((z%2 == 0) ? 0.433f : 0f), 0, z*0.75f),
                            Quaternion.identity);
            }
        }
    }
}

 
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Гексагональная сетка...

Сообщение Nicloay 30 ноя 2012, 02:15

почитай вот это http://www-cs-students.stanford.edu/~am ... ing/grids/ , гексогальная карта такая же как квадратная у которой нет 2х диаганальных соседей.
у http://www-cs-students.stanford.edu/~am ... g.html#hex собрана хорошая колекция статей на тему гекосв, плюс там же найдешь как карту генерить если вдруг понадобится.
If you wish to make an apple pie from scratch, you must first invent the universe.(Carl Sagan, Cosmos)
| My Asset Store | coloring book | github | _wiki.unity3d.com | twitter | linkedin |
Аватара пользователя
Nicloay
Адепт
 
Сообщения: 1288
Зарегистрирован: 31 май 2012, 09:27
Откуда: Альпс
  • Сайт

Re: Гексагональная сетка...

Сообщение Fielder 30 ноя 2012, 07:31

Благодарю ребят, попробую)) :-bd
Спасибо за ссылочки, очень кстати
Fielder
UNец
 
Сообщения: 6
Зарегистрирован: 14 июл 2012, 03:02

Re: Гексагональная сетка...

Сообщение alt3d 30 ноя 2012, 11:02

Кстати, если делать гексы не идеальной геометрической формы, а немного сжатые по одной из сторон, то они лучше упаковываются в сетку - координаты их центров становятся числами вроде 1,5, 3, и т.д. а не 1,675853.

А пользователь разницу на глаз не заметит.

А так да - один ряд смещаем относительно соседнего на половину размера гекса.
alt3d
Старожил
 
Сообщения: 687
Зарегистрирован: 04 сен 2011, 21:19
  • Сайт
  • ICQ


Вернуться в Почемучка

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

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