배운 것들
만약 열과 행의 갯수가 같다면 카드의 갯수를 for문을 하나만 쓰고도 표현할 수 있다.
float x = i / n;
float y = i % n;
for (int i = 0; i < 16; i++)
{
GameObject newCard = Instantiate(card);
newCard.transform.parent = GameObject.Find("cards").transform;
float x = (i / 4) * 1.4f;
float y = (i % 4) * 1.4f;
newCard.transform.position = new Vector3(x, y, 0);
}
추가적으로 일반식을 구하여 위치를 맞춰봤다.
public GameObject card;
public int line = 4;
void Start()
{
for (int i = 0; i < Math.Pow(line, 2); i++)
{
GameObject newCard = Instantiate(card);
newCard.transform.parent = GameObject.Find("Cards").transform;
// (1) 0 (2) 0.5칸 (3) 1칸 ... => (n - 1) * 0.5 칸
float fitCenterValue = (line - 1) * (1.4f * 0.5f);
float x = (i / line) * 1.4f - fitCenterValue;
float y = (i % line) * 1.4f - (fitCenterValue + 0.9f); // 0.9f == 높이 맞춰준 값
newCard.transform.position = new Vector3(x, y, 0);
}
}
배열 랜덤 정렬
아래 배열은 랜덤하게 정렬되는데 UnityEngine.Random.Range(-1f, 1f)에서 item의 각 요소에 랜덤 값을 부여하여 그 부여된 값으로 정렬하기 때문에 랜덤 정렬이 가능한 것이다.
int[] rtans = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7 };
rtans = rtans.OrderBy(item => UnityEngine.Random.Range(-1f, 1f)).ToArray();
'스파르타 Unity 1기' 카테고리의 다른 글
스파르타 Unity 8기 2일차 TIL (0) | 2023.08.08 |
---|---|
스파르타 Unity 8기 1일차 TIL (1) | 2023.08.07 |
사전캠프 4일차 (0) | 2023.08.04 |
사전캠프 2일차 (0) | 2023.08.02 |
사전캠프 1일차 (0) | 2023.08.01 |