GameDevelop/Unity기초쌓기

[Unity] 충돌체크로 점수 증가 AddScore()

도도돋치 2025. 3. 28. 20:58
Contents 접기
728x90

 

매개변수란, 이 함수를 다른 곳에서 호출했을 때 데이터를 넘겨주기 위한 공간.

public void AddScore(int score)
{

}

위 코드의 score이 매개변수이다.

 

점수를 증가시키기 위해서 캐릭터와 빗물이 충돌했을 때 점수를 넘겨줘야한다.

이 score 변수를 통해서 넘어온 데이터를 totalScore에 더해줄 것이다.

 

Rain스크립트에서 이전에 그라운드와 충돌체크를 해준 것처럼,

플레이어와 빗방울의 충돌이 이루어지면 점수를 추가하는 로직을 구현해보자.

 

점수 증가 로직

GameManager 스크립트
void MakeRain()
{
    Instantiate(rain);
}

//캐릭터와 빗물이 맞았을 때 호출
public void AddScore(int score)
{
    totalScore += score;
}

AddScore은 Public으로 설정되어 있는데 이는 내 스크립트가 아닌 다른 스크립트에서 꺼낼 수 있게끔 접근을 허용해 주는 키워드이다.

public 설정을 안해주면 기본적으로 접근이 안되는 private로 설정이 된다. 

public으로 설정된 AddScore은 다른 스크립트에서 호출이 가능하지만 MakeRain은 private으로 선언되어 다른 스크립트에서 접근이 불가능하다. 

 

Rain 스크립트 
//충돌이벤트 발생시
private void OnCollisionEnter2D(Collision2D collision)
{
	//빗방울, 땅 닿았을 경우
    if(collision.gameObject.CompareTag("Ground"))
    {
        Destroy(gameObject);
    }
	//빗방울, 플레이어 닿았을 경우
    if (collision.gameObject.CompareTag("Player"))
    {
    	//AddScore호출하여 score를 총점수에 더해줌
        GameManager.Instance.AddScore(score);
        Destroy(gameObject);
    }
}

 

Player태그인지를 비교하기위해 우선 그라운드처럼 캐릭터에도 기존에 존재하는 Player Tag를 부과한다.

 

빗방울이 Player랑 부딪혔을 경우, Gamemanager에 있는 AddScore함수에 score를 매개변수로 넘겨주고 Destroy(gameObject);를 통해 빗방울을 없애준다. 

 

충돌체크 범위조정

그리고 충돌체크를 위해 캐릭터 오브젝트에도 Box Collider 2D를 붙여준 후, Edit Collider옆 버튼을 누른다.

Collider을 넣고 플레이어 오브젝트를 더블클릭하면 이렇게 초록색 네모가 나오는데, 이게 Collider영역이다.

이 영역을 캐릭터 크기에 맞게 조정해준다. 

 

실행 결과

게임을 실행시키고 GameManager AddScore에 Debug.Log(totalScore);를 추가하여 totalScore(왼쪽하단)가 정확히 올라가는지 확인해준다.

 

 

 

728x90