내일배움캠프

내일배움캠프 카드 배치 기능 구현

우대비 2025. 1. 22. 21:59
반응형

 

배치 아이디어

Board 클래스에서 카드를 생성할 때, 하단부에 생성 되도록 했습니다.

이후에 카드가 배치되어야할 위치를 Card 객체로 전송 후 Card 클래스의 Update 함수에서 해당 위치로 이동하도록 했습니다.

private void Update() 
{
    Vector3 dir = (cardPosition - gameObject.transform.position);
    if (dir.magnitude > 0.1f)
    	gameObject.transform.position += dir.normalized * 10.0f * Time.deltaTime;
}

 

 

 

자연스러운 카드 이동

카드를 생성할 때, 모든 카드를 한번에 생성하고 보내는건 기획 의도에서 벗어난 것이라 생각했습니다.

이에 간격을 두고 생성되도록 하였고 코루틴 함수를 이용했습니다.

 IEnumerator SpawnCard(int[] arr)
{
	while(...)
    {
    ...
    ...
        go.transform.position = new Vector2(0, -5);
        go.GetComponent<Card>().Setting(arr[i], new Vector2(x, y));

        yield return new WaitForSeconds(0.1f);
    }
}

 

 

카드 뒤집어서 보여주기

모든 카드의 배치를 끝낸 후에 한번에 카드를 뒤집어서 보여줄 수 있도록 생성한 카드를 List에 담고 반복문을 통해

동시에 실행되도록 했습니다.

for (....)
{
    Card cd = go.GetComponent<Card>();
    cards.Add(cd);
    ...
    ...
}
yield return new WaitForSeconds(0.5f);
foreach (Card cd in cards)
	cd.StartCard();

 

 

적절한 시간에 작동되는 타이머

카드를 보내는 중에도 타이머가 작동하는 것은 맞지 않다고 생각했습니다.

이에 카드를 다 보여주고 난 후에 타이머가 실행되도록 다시 한번 Yield return을 하였고 

GameManager의 StartTimer함수를 통해 작동되도록 했습니다.

yield return new WaitForSeconds(2.0f);
GameManager.Instance.StartTimer();
반응형
LIST

'내일배움캠프' 카테고리의 다른 글

LINQ 정리  (0) 2025.01.27
틱택톡 C#  (0) 2025.01.25
행맨 게임  (0) 2025.01.16
사칙연산간 우선순위  (0) 2025.01.14
Convert와 Parse의 차이점  (0) 2025.01.14