게임개발/Unity

24-09-10 카드뒤집기 미니프로젝트 02

몰록 2024. 9. 10. 21:32

오늘 구현한것 :

 

[클리어 UI 확장]  //  [카드 맞춰지는 연출]  //  [기타 디자인적 구현 등]

 

클리어 UI 확장 

 

 

클리어 UI

게임이 클리어될때 나오는 UI를 확장시키고, 각 조원이 초상화를 선택시 소개 창이 뜨도록 해줬다.

 

Introduce Button

한 스크립트에 창을 키고 끄는 기능을 만들어 주고  

각 오브젝트에 할당된 Intro와 Outro

 

 

 

 

카드 맞춰지는 연출 

이부분은 조금 어려웠는데, 구현하고자 하며 접근해본 방법은 이러했다 : 

 

각 카드의 주인별로 초상화를 배치, 위치값 저장 -> 저장한 위치값을 카드 스크립트에 전달, 카드의 인덱스별로 주인(목적지)를 설정. -> 카드가 맞춰질때 이동하면서 Destroy.

 

GameManager script, Unity 게임화면

 

각 카드의 주인을 상징하는 초상화를 미리 배치해주고, 그 위치값을 GameManager에서 public을 통해 받아줬다.

 

 

Card Script

 

미리 함수를 선언해주고

 

Card Script

인덱스를 불러오는 함수에 if문을 추가해서 각 카드의 인덱스별로 목적지를 다르게 설정해줬다.

근데 여기서 " || " 와 " && " 를 헷갈렸기 때문에 많이 고생했다;;;; 

 

Card Script ( Void Update )

그리고 Update문에서 이동을 실행시킬 if문을 만들어줬다. (트리거는 설정해둔 bool값으로, 카드가 매치되는 로직에서 true로 만들어주게 했다) 

 

여기서 새로 배운 부분이 Vector2.Lerp,  이 단어는 0에서 1사이의 값으로두 위치 사이를 선형으로움직이는 단어다. 

풀어서설명하자면 : 

 

Vector2.Lerp( A , B , 0 ) 라고 썼으면, A에서 B로 이동하는 간격을  0에서 1 사이의 값으로 움직인다는 거니까 이 경우엔 출발점인 A에 와있게 되고, 만약 Vector2.Lerp( A, B, 1) 라고 썼다면 도착점인 B에 와있게 되는 것이다.

 

즉 스크립트에선 Vector2.Lerp(this.transform.position, endPos, t) 라고 적었기 때문에, 출발점은 현재 카드의위치. 도착 목적지는 인덱스별로 달라진 4가지 위치중 하나, 그리고 그 진행도가 t += Time.deltaTime * speed 로 0에서부터 1로 서서히 증가하게 되는것이다.

 

 

적용된 모습