Unity/Unity 개발

Unity 카드 뒤집기 게임 고도화 하기(2-2) 게임에 연출 더하기

leedh1211 2025. 4. 10. 20:56

Unity 강의를 듣고 카드 뒤집기 게임을 완성하고, 추가 도전과제를 받아 게임을 고도화 하는 작업을 진행했다.

도전과제는 

  • 사운드 삽입하기
  • 게임에 연출넣기
  • 스테이지, 난이도 추가하기

이 세가지로 이번 포스팅에는 저번포스팅에 이어 연출을 넣는것들을 추가해보겠다.

이번에는 카드를 배치하는것을 추가하겠다. 포스팅은, 개발이 완료되고 작성하는것이라, 추가적인 기능이 작성되어있을수도있다. 기존 코드는 카드의 scale이 1.3이고, 카드를 4*4로 배치하는 코드였어서

이런형식으로 개발되어있었다.

이를 결과적으로 저 위치에 도착하지만, 출발위치를 설정하여, for문이 돌때 한장씩 날아오는 느낌을 주면될거같아 개발을 진행했다. 카드를날아가게 하는 코드의 핵심 함수는 Vector3.Lerp() 함수로 시작벡터값, 도착벡터값, 시간을 넣어주면 된다.

 

이를 이용하여 MoveCard라는 함수를 작성했다.

여기서 중요한 개념은 Unity의 코루틴과 IEnumerator이다.

코루틴이란, Unity에서 비동기 작업을 수행할때 다음으로 넘어가기전까지 대기시키게 해주는 함수이다.

즉 코루틴을 사용하면 비동기작업을 수행할때 다음작업을 콜백을 걸지 않고도 사용할 수 있게 해주는것 같다.

 

이 IEnumerator는 코루틴 반환 타입으로 활용되어 사용되었다.

While문 안의 yield return null;은 다음프레임까지 대기라는 뜻이며, 한프레임에 여러카드가 날아가면 결과적으로 여러카드가 한번에 나오는것처럼 되기때문에 한프레임에 한장의 카드씩만 계산하기 위해 넣었다.

 

이제, Target위치는 동일하지만, 초기 위치를 세팅해줘야 하는데, 현재 화면에서 나오지 않는 값인 10.0f, 10.0f,0으로 설정하여 화면 우측상단에서 카드가 날아오는것처럼 세팅했다.

 

이렇게 작업해주면, 우측상단부터 카드가 한장씩 날아와 배치를 채우게 되었다.

또한, 카드가 그냥 뒷장부터 보여주는거 보다, 한장씩 앞면으로 날아와서 뒷면으로 뒤집히면, 난이도가 조금 쉬워질거같아 해당 기능도 구현해보았다.

카드가 한장씩 배치될때 MoveCard함수마지막에, 이전포스팅에서 제작했던 isFlip을 실행시켜 주었다.

결과는

 

 

 

잘 나오는것 같다.