본문 바로가기
디지털노마드

챗GPT게임개발53: Unity에서 자연스러운 낮과 밤의 주기 구현하기(4)

by 인텔리노마드라이프 2024. 6. 19.
728x90

안녕하세요. 인텔리원스튜디오(IntelliOneStudio)입니다.

오늘은 GPT-4, GPT-4o 활용해서 Unity에서 자연스러운 낮과 밤의 주기 구현하기를 살펴볼께요.

[오늘의 목표] GPT-4, GPT-4o 활용해서 Unity로 구현한 자연스러운 낮과 밤의 주기 구현하기
  1. DayLight 살펴보기
  2. NightLight 살펴보기
  3. AmbientLight 살펴보기
  4. SunRimLight 살펴보기
  5. MoonRimLight 살펴보기
  6. 그림자 각도 및 길이 설정
  7. 전체 조명과 그림자 통합하기
  8. 에디터에서 테스트하기
  9. 최적화 및 성능 고려 사항
  10. 결론 

*Happy Harvest - 2D Sample Project에서 구현한 내용을 설명해요.

 

SunRimLight 살펴보기

이번 글에서는 Unity 엔진을 활용해 자연스러운 낮과 밤의 주기를 구현하는 방법을 알아보려고 해요. 특히, 네 번째 단계로 태양 가장자리 조명인 SunRimLight에 대해 집중적으로 설명할게요.

 

SunRimLight는 태양이 떠오르거나 질 때의 가장자리 빛을 표현하는 데 사용돼요.

SunRimLight의 역할

새벽

  • 설명: 새벽이 밝아오면서 SunRimLight는 붉은색에서 오렌지색으로 변해요. 이는 태양이 지평선 위로 떠오를 때의 빛을 시각적으로 표현해 줘요.

아침

  • 설명: 태양이 떠오르고 나서, SunRimLight는 밝은 노란색으로 변해요. 이는 태양이 하늘로 높이 올라가는 시간대를 표현하는 데 도움을 줘요.

저녁

  • 설명: 저녁이 되면 SunRimLight는 다시 붉은색으로 변하면서 서서히 어두워져요. 이는 태양이 지평선 아래로 지는 시간대를 시각적으로 표현해 줘요.

Inspector 패널의 SunRimLight 설정 내용

  • Color and Gradient: Color는 현재 밝은 색상에서 어두운 색상으로 변하는 그라디언트에 의해 시간이 지남에 따라 변화해요.
  • Intensity: 밝기는 1.0로 설정되어 있어, 가장자리 빛의 밝기를 적절하게 조절해줘요.
  • Radius: 내부 반경과 외부 반경이 설정되어 조명의 범위를 정의해요.
  • Blending: 혼합 스타일은 'Additive'로 설정되어 있어, 조명이 더 밝게 보이는 방식으로 적용돼요.
  • Shadows: 현재 그림자는 활성화되어 있어, 더 현실감 있는 환경을 만들어줘요.
  • Volumetric and Normal Maps: 체적 조명과 노멀 맵 설정이 적용되어 현실감 있는 조명 효과를 제공해요.

위에서 살펴본 것과 같이 게임 내에서 태양의 가장자리 빛을 자연스럽게 표현하기 위해 SunRimLight는 시간의 흐름에 따라 색상이 변하게 설정돼요.

 

이 변화를 구현하기 위해 SunRimLightGradient라는 그라디언트를 사용해요.

SunRimLight 색상 변화 구현하기

SunRimLight의 색상 변화는 SunRimLightGradient를 사용해서 구현할 수 있어요. 이 그라디언트는 시간의 흐름에 따라 색상이 어떻게 변할지를 정의해요.

 

아래 코드는 참고로 보세요. 나중에 자연스럽게 이해가 될거예요.

public void UpdateLight(float ratio)
{
    // 태양 가장자리 조명 색상 업데이트
    SunRimLight.color = SunRimLightGradient.Evaluate(ratio);
}
  • ratio: 현재 시간의 비율을 나타내요. 예를 들어, 0.0은 하루의 시작을, 1.0은 하루의 끝을 의미해요.
  • SunRimLightGradient.Evaluate(ratio): 현재 시간 비율에 따라 그라디언트에서 적절한 색상을 가져와 SunRimLight에 적용해요.

SunRimLightGradient 설정 예시

 

그라디언트를 설정할 때, 새벽, 아침, 저녁 시간대에 맞는 색상 키를 추가해요. 아래는 예시 그라디언트 설정이에요:

  • 0% (새벽): 붉은색
  • 25% (아침): 오렌지색
  • 50% (낮): 밝은 노란색
  • 75% (저녁): 오렌지색
  • 100% (밤): 붉은색

이렇게 설정된 그라디언트를 사용하면, 시간의 흐름에 따라 SunRimLight의 색상이 자연스럽게 변하게 돼요.

시각적 예시

  • 새벽 (0.0 ~ 0.25): SunRimLight는 붉은색에서 오렌지색으로 변하며, 태양이 떠오르는 것을 표현해요.
  • 아침 (0.25 ~ 0.5): SunRimLight는 오렌지색에서 밝은 노란색으로 변하며, 태양이 하늘로 높이 올라가는 것을 표현해요.
  • 저녁 (0.5 ~ 0.75): SunRimLight는 밝은 노란색에서 오렌지색으로 변하며, 태양이 지는 시간을 표현해요.
  • 밤 (0.75 ~ 1.0): SunRimLight는 오렌지색에서 붉은색으로 변하며, 태양이 지는 것을 시각적으로 표현해요.

결론

SunRimLight는 태양이 떠오르거나 질 때의 가장자리 빛을 시각적으로 표현하는 중요한 역할을 해요. SunRimLightGradient를 활용해 시간에 따라 색상을 변하게 설정하면, 플레이어는 더욱 몰입감 있는 환경에서 게임을 즐길 수 있어요.

 

다음 글에서는 MoonRimLight와 다른 조명 요소들을 다루며, 더욱 완성도 높은 주기 구현 방법을 소개할게요. 기대해 주세요!

 

지금까지,

언제나 성장하는 인텔리원스튜디오(IntelliOneStudio)입니다.

감사합니다.

728x90