TIL(2024,06,24)팀 프로젝트 자유주제 (unRailed) 만들어보기

김보근·2024년 6월 24일

Unity

목록 보기
23/113
post-thumbnail

오늘은 온도 시스템과 물공급 시스템을 구현해볼것이다.
Unity에서 온도 관리 시스템 구현

Unity의 MonoBehaviour를 상속받는 Train 클래스 작성.
Train 클래스는 열차의 온도를 관리하고, 특정 온도에 도달하면 불타는 상태로 전환되도록 구현.
온도 변화 로직 추가

TrainTemperature 메서드를 통해 열차의 온도가 일정 비율로 증가하도록 구현.
온도가 80도에 도달하면 열차가 불타기 시작하고, 이 상태를 isOnFire 플래그로 관리.
물 공급 시스템 구현

WaterTank 메서드를 통해 불타는 열차에 물을 공급하여 온도를 낮출 수 있도록 구현.
온도가 20도 이하로 떨어지면 불이 꺼지도록 설정.
충돌 감지 및 처리

OnCollisionEnter 메서드를 사용하여 열차가 다른 객체와 충돌했을 때의 로직을 구현.
충돌 시 온도가 급격히 상승하도록 설정하여 충돌의 영향을 시각적으로 표현.
디버깅을 위한 로그 추가

TrainTemperature, WaterTank, 그리고 OnCollisionEnter 메서드에 Debug.Log를 사용하여 온도 변화와 상태 전환 시 로그를 출력하도록 추가.
이를 통해 온도가 상승하거나 물 공급으로 감소할 때의 상태를 확인할 수 있도록 함.

void TrainTemperature()
{
    if (!isOnFire)
    {
        currentTemperature += currentTemperature * temperatureRate * Time.deltaTime;
        Debug.Log($"현재 온도: {currentTemperature}도");

        if (currentTemperature >= 80)
        {
            isOnFire = true;
            // 이펙트 추가 
            // 사운드 추가
            Debug.Log("열차가 불타기 시작했습니다!");
        }
    }
}

public void WaterTank(float water)
{
    if (isOnFire)
    {
        currentTemperature -= water;
        Debug.Log($"물 공급: {water} 단위. 현재 온도: {currentTemperature}도");

        if (currentTemperature <= 20)
        {
            isOnFire = false;
            Debug.Log("불이 꺼졌습니다.");
        }
    }        
}

void OnCollisionEnter(Collision collision)
{
    // 충돌한 객체의 태그가 "Obstacle"인 경우
    if (collision.gameObject.CompareTag("Obstacle"))
    {
        currentTemperature += 20; // 충돌 시 온도 급상승
        Debug.Log($"충돌 발생! 현재 온도: {currentTemperature}도");

        if (currentTemperature >= 80)
        {
            isOnFire = true;
            // 이펙트 추가 
            // 사운드 추가
            Debug.Log("충돌로 인해 열차가 불타기 시작했습니다!");
        }
    }
}

Unity에서 Debug.Log를 사용하여 디버깅 정보를 출력하는 방법을 익혔음.
MonoBehaviour의 Update와 FixedUpdate 메서드의 차이점과 용도에 대해 학습함.
물리 탐지(Physics.OverlapSphere) 및 레이어 마스크(LayerMask)를 사용하여 객체를 탐지하고 필터링하는 방법을 배움.
OnCollisionEnter 메서드를 통해 충돌 감지 및 처리를 구현하는 방법을 학습함.

profile
게임개발자꿈나무

0개의 댓글