매개변수란, 이 함수를 다른 곳에서 호출했을 때 데이터를 넘겨주기 위한 공간.
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(왼쪽하단)가 정확히 올라가는지 확인해준다.
'GameDevelop > Unity기초쌓기' 카테고리의 다른 글
[Unity] 게임종료UI (0) | 2025.03.29 |
---|---|
[Unity] 올라가는 점수값 UI표시 - Text타입 (0) | 2025.03.29 |
[Unity] 싱글톤(Singleton) (0) | 2025.03.28 |
[Unity] Canvas 점수보드 UI, 폰트 (0) | 2025.03.28 |
[Unity] UnassignedReferenceException오류 (0) | 2025.03.28 |