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

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

by 인텔리노마드라이프 2024. 6. 15.
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에서 구현한 내용을 설명해요.

 

NightLight 살펴보기

이번 글에서는 Unity 엔진을 활용해 자연스러운 낮과 밤의 주기를 구현하는 방법을 알아보려고 해요.

두 번째 단계로 야간 조명인 NightLight에 대해 설명할게요.

 

NightLight는 밤 시간 동안 주요 조명으로 사용돼요.

NightLight의 역할

저녁

  • 설명: 해가 지고 어둠이 찾아오면, NightLight는 어두운 파란색으로 변해요. 이는 밤이 시작되는 시간을 시각적으로 표현하는 데 도움을 줘요.

  • 설명: 밤 시간 동안 NightLight는 가장 어두운 색상을 유지해요. 이 시간대에는 달빛을 시뮬레이션하여 어두운 파란색을 띠며, 게임 환경을 어둡고 신비롭게 만듭니다.

새벽

  • 설명: 새벽이 되면, NightLight는 다시 밝은 파란색으로 변하면서 서서히 희미해져요. 이는 아침이 밝아오는 시간대를 시각적으로 표현하는 데 도움을 줘요.

 

첨부된 이미지는 Unity 에디터에서 NightLight 설정을 보여주고 있어요.

이는 야간 동안 게임 세계에 조명을 제공하기 위해 설정된 2D 조명 컴포넌트이고 각 설정 항목을 요약해볼게요.

Inspector 패널의 NightLight 설정 내용

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

 

위에서 살펴본 것과 같이 게임 내에서 밤의 분위기를 자연스럽게 표현하기 위해 NightLight는 시간의 흐름에 따라 색상이 변하게 설정돼요.

 

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

NightLight 색상 변화 구현하기

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

 

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

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

NightLightGradient 설정 예시

 

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

  • 0% (저녁): 어두운 파란색
  • 50% (밤): 매우 어두운 색
  • 100% (새벽): 밝은 파란색

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

시각적 예시

  • 저녁 (0.0 ~ 0.5): NightLight는 어두운 파란색에서 점점 더 어두워지며, 밤의 시작을 시각적으로 표현해요.
  • 밤 (0.5 ~ 0.83): NightLight는 가장 어두운 색상을 유지하며, 달빛을 시뮬레이션해요.
  • 새벽 (0.83 ~ 1.0): NightLight는 다시 밝은 파란색으로 변하면서 점점 희미해져요.

결론

NightLight는 밤 시간 동안 게임의 분위기를 조성하는 중요한 역할을 해요. NightLightGradient를 활용해 시간에 따라 색상을 변하게 설정하면, 플레이어는 더욱 몰입감 있는 환경에서 게임을 즐길 수 있어요.

 

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

 

지금까지,

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

감사합니다.

728x90