개발일지/스파르타 코딩클럽 유니티 강의

14일차 카드 배치하기 ( for 반복문 )

치치베베 2024. 4. 8. 15:42

오늘은 반복문 for문을 배웠다.

이미 여러번 써봤지만 배울때마다 볼때마다 어려운 것 같다..

 

오늘 배운 내용

  • 카드 배치 전략 세우기
  • 자동으로 카드 생성하기
  • for문 사용법
  • 카드 위치 잡아주기
  • 르탄이 이미지 집어넣기
  • 랜덤으로 섞기
  • 리스트를 랜덤으로 섞기
  • 르탄이 붙여주기
  • 기본 애니메이션 만들기
  • 뒤집기 애니메이션 만들기
  • 애니메이션 조건 만들기

 

새롭게 알게 된 내용

 

반복으로 생성한 오브젝트 폴더 안에 넣기

public GameObject card;

void Start()
{
    for (int i = 0; i < 16; i++)
    {
        GameObject newCard = Instantiate(card);
        newCard.transform.parent = GameObject.Find("cards").transform;
    }
}

새롭게 생성된 카드를 newCard로 지칭하고

newCard의 부모를 cards 폴더를 Find 해서 바꿔준다

 

카드 위치 잡아주기

void Start()
{
    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);
    }
}

오랫동안 수학과 친하게 지내지 않던 내가

오랜만에 숫자와 놀았는데

정말 힘들었다.. 

for문 자체는 알고 있었지만

이런 식으로 위치 조정을 할 수 있구나를 배웠다.

 

리스트 만드는 법

int[] rtans = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7 };

 

리스트를 랜덤하게 섞기

using System.Linq; 를 넣어주고

int[] rtans = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7 };

    rtans = rtans.OrderBy(item => Random.Range(-1.0f, 1.0f)).ToArray();

이 부분 잘 이해가 되지 않았던 부분은

Random.Range(-1.0f, 1.0f) 부분이다 왜 -1.0f에서 1.0f지??

 

르탄이 붙여주기

일단 어떤 파일을 코드로 지정하고 싶을 때는 Resources 폴더를 만들어서 파일을 옮긴다.

string rtanName = "rtan" + rtans[i].ToString();
newCard.transform.Find("front").GetComponent<SpriteRenderer>().sprite = Resources.Load<Sprite>(rtanName);

후에 Resources폴더 안에 있는 이미지의 이름들이 rtan0~rtan7 이기 때문에

rtanName을 rtan + i로 지정해준다

그 후 newCard의 front를 찾은 후 front의 스프라이트를 랜덤 rtan으로 바꾼다

 

오늘 발생한 문제

 

중요하게 생각하는 부분

 

오늘 새로 배운 부분들 모두가 너무 중요한 부분이다.

 

특히나 for문은 진짜 계속계속 많이 써보고 더 익숙해져야 할거같다..

게임엔진 관련 수학공부도 해야할 것 같다는 필요성을 곧 느낄것같다

단순 산수를 넘어선 부분이 많이 나올거같은 느낌 ㅠ