사천성 만들기
사천성을 이어 만드려 한다.
1. 리소스 추가
팀원분이 좋은 무료 에셋을 공유해주셔서 카드에 리소스를 넣어보려 한다.
먼저 Color로 구분되었던 카드들에게 Sprtie를 넣어준 후
Position와 Scale, 카드의 개수를 조정했다
2. 일치하는 카드 제거하기
카드 프리팹에 Button 컴포넌트를 넣어서 일치하는 카드를 없애려고 했는데...
Button이 작동을 안하는 문제가 생겼다.
오랫동안 문제를 붙잡고 있다가 다른 분께 물어 겨우 해결했다.
일단 Button 클릭이 안됐던 이유는 Canvas의 자식이 아니어서, 또는
Canvas의 Render Mode가 World Space가 아니었기 때문으로 추측된다.
그리고 애초에 Button 자체가 부하가 많이 발생한다고 한다.
그래서 카드 하나하나에 버튼을 넣는 방법보다는 RayCast를 사용하는 방법을 추천해주셨다.
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
RaycastHit2D hit = Physics2D.Raycast(mousePos, Vector2.zero, 0f);
if (hit)
{
GameObject card = hit.collider.gameObject;
...
}
}
}
첫 번째로 클릭한 카드와 두 번째로 클릭한 카드의 그림이 같을 때 두 카드는 제거되는데,
두 카드의 그림이 다르면 두 번째로 클릭한 카드가 다시 첫 번째 카드로 변하도록 코드를 작성하였다
GameObject card = hit.collider.gameObject;
if (firstCard == null && !card.GetComponent<Card>().isPicked)
{
firstCard = card;
firstCard.GetComponent<Card>().isPicked = true;
}
else if (secondCard == null && !card.GetComponent<Card>().isPicked)
{
secondCard = card;
secondCard.GetComponent<Card>().isPicked = true;
if (firstCard.GetComponent<Card>().spriteNum
== secondCard.GetComponent<Card>().spriteNum)
{
Destroy(firstCard);
Destroy(secondCard);
}
else
{
firstCard.GetComponent<Card>().isPicked = false;
firstCard = secondCard;
secondCard = null;
}
}
버튼 고친다고 시간을 너무 썼다..
내일은 알고리즘을 찾아보고 게임에 적용시키는 작업을 하려한다.
내일도 화이팅~
'내일배움캠프(Unity)' 카테고리의 다른 글
내일배움캠프 게임개발(Unity) 사전캠프 17일차 TIL (0) | 2023.10.24 |
---|---|
내일배움캠프 게임개발(Unity) 사전캠프 16일차 TIL (1) | 2023.10.23 |
내일배움캠프 게임개발(Unity) 사전캠프 15일차 TIL (0) | 2023.10.20 |
내일배움캠프 게임개발(Unity) 사전캠프 14일차 TIL (0) | 2023.10.19 |
내일배움캠프 게임개발(Unity) 사전캠프 11일차 TIL (0) | 2023.10.16 |