2015-11-23 2 views
-1

Im пытается получить формы готовой шестнадцатеричной формы, которые уже созданы, чтобы выравниваться друг с другом в формировании сетки. Я получил сетку, но я не могу заставить гексы вписаться друг в друга. Исправлено y% 2, но так, как он настраивается, теперь он сбой.Попытка получить Hex-сетку

using UnityEngine; 
using System.Collections; 

public class boardObject : MonoBehaviour { 

// Instantiates a prefab in a grid 

public GameObject prefab; 
public float gridX = 5f; 
public float gridY = 5f; 
public float spacing = 2f; 

void Start() { 
    for (float y = 0.0f; y < gridY; y++) { 
     for (float x = 0.0f; x < gridX; x++) { 
      // THIS IS WHAT WAS MISSING FOR THIS TO ACTUALLY WORK MAKING A NEW VECTOR 3 
      // POSITION AFTER THE LOOP WAS SET UP. EACH NEW hex NEEDED HAVE A NEW POSITION. -> 
      Vector3 pos = new Vector3(x, 0.0f, y) * spacing; 
      // 
      // 
      //%2 thingy 
      if (y%2.0f==0.0f) 
       gridY += 0.5f; 
      else 
       gridY -= 0.0f; 
      Instantiate(prefab, pos, Quaternion.identity); 


     } 
    } 

} 

}

Первый рис является один я, второй это один я пытаюсь сделать. This is the square board hex

This is what I am trying to do

+0

Я уверен, что 'у% 0' не является полезным. Вы имеете в виду 'y% 2'? – Draco18s

+0

Спасибо, я исправил это, но он все еще не работает. – cflies1121

+0

Я предполагаю, что горизонтальное расстояние не совпадает с вертикальным? Это связано с тем, что шестиугольники имеют разную ширину, чем высоту (по сравнению с квадратами), поэтому вам придется умножать значения 'x' и' y' на разные суммы вместо того, чтобы умножать весь вектор (что является путаной вещью в любом случае) , – Draco18s

ответ

0
using UnityEngine; 
using System.Collections; 

public class boardObject : MonoBehaviour { 

// Instantiates a prefab in a grid 

public GameObject prefab; 
public float gridX = 5f; 
public float gridY = 5f; 
public float spacing = 2f; 
public float xsize = 1.0f; 
public float ysize = 1.0f; 

void Start() { 
    for (float y = 0; y < gridY; y++) { 
     for (float x = 1; x < gridX; x++) { //<<<<<This is where the change was made to get it to work. x = 1 instead of 0. 


      Vector3 pos = new Vector3 (x * xsize, 0.0f, y * ysize) ; 

      Instantiate (prefab, pos, Quaternion.identity); 


      if (y % 2 == 0) 
       y += 1; 
      else 
       y -= 1; 

     } 
    } 

} 
void Update() { 

}}

Смежные вопросы