배운 것들

만약 열과 행의 갯수가 같다면 카드의 갯수를 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

+ Recent posts