콜라이더 2D일걸로 보이는데


여기서 보통은 어떤 설정은 한지 모르겠지만


수박게임은 기본적으로 구조가


게임 매니저


드롭퍼


프루츠


3구조로된 간단한 게임이다.


게임 매니저는 점수 판단, 줄 넘어섰느냐, 수박 합쳐지는거 관련


드롭퍼가 보통은 아이템 드랍 관련


과일은 과일정보인데


보통은


게임 오브젝트끼리 콜라이더 충돌할때 게임매니저에서


과일의 인스턴스 아이디가 있을거 아니냐



1
2
3
4
5
6
7
8
9
10
11
12
13
// 과일 충돌 여부 감지
void OnCollisionEnter2D(Collision2D collision)
{
// 충돌한 다른 게임 오브젝트에서 과일 컴포넌트 가져옴
Fruit otherFruit = collision.gameObject.GetComponent<Fruit>();
// 다른 과일 존재하고, 두 과일 ID 확인, 인스턴스 ID가 다를 경우 체크, 과일이 같은 종류고,동일한 과일 2번합치는거 방지
if (otherFruit != null && otherFruit.id == this.id && this.gameObject.GetInstanceID() < collision.gameObject.GetInstanceID())
{
game.InstantiateFruit(this.transform.position, this.id + 1);
game.addScore(this.id);
StartCoroutine(DestroyFruits(this.gameObject, collision.gameObject));
}
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
/// <summary>
/// 과일 프리펩 인스턴스
/// </summary>
public GameObject InstantiateFruit(Vector3 position, int id)
{
GameObject combinedFruit = Instantiate(fruitPrefabs[id], position, Quaternion.identity);
combinedFruit.GetComponent<Fruit>().id = id;
return combinedFruit;
}
cs


콜라이더에서 게임 오브젝트의 컴포넌트를 받아온다(여기서는 콜라이더에 연결된 프루츠를 참조한다)


그럼 충돌감지-> 다른 과일일때는 무시


동일 과일일시(ID가 동일할 시)-> 합쳐짐



game.InstantiateFruit(this.transform.position, this.id + 1): 현재 과일의 위치에 ID를 1 증가시킨 새로운 과일을 생성


하는 매커니즘이야


따라서 너의 경우에도 비슷하게 합쳐질 경우 그에 대한 식별하는 코드를 짜야겠지


그리고 합쳐질 경우 동일 생성될 프리펩을 구현하는 논리가 추가되어야하고