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

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

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

[참고] 챗gpt를 활용하여 3주만에 개발/배포한 게임

아래 링크를 통해서 다운로드해보세요.

 

- APP Store

https://apps.apple.com/kr/app/%EB%86%8D%EB%B6%80%EC%9D%98-%EA%BF%88/id6479183930

 

‎농부의 꿈

‎오래된 전설이 숨겨져 있는 [농부의 꿈]목장 한구석에서 ‘비밀의 문'과 '마법 책'이 발견되었어요. [변신하는 동물들] 병아리가 합쳐져 닭이 되고, 닭이 합쳐져 고슴도치로 변신하며, 점점 더

apps.apple.com

 

- Google Play

https://play.google.com/store/apps/details?id=com.intellione.farmersfirstdream&pcampaignid=web_share

 

농부의 꿈 - Google Play 앱

평화로운 목장에서 신나는 동물 합치기 무료게임 (바람, 뚫어뻥, 밧줄, 무중력 등 매직 아이템 활용해 병아리를 젖소로 키워보세요.)

play.google.com

 

 

그림자 각도 및 길이 설정

이번 글에서는 Unity 엔진을 활용해 자연스러운 낮과 밤의 주기를 구현하는 방법을 알아보려고 해요. 특히, 여섯 번째 단계로 그림자 각도 및 길이 설정에 대해 집중적으로 설명할게요.

 

그림자 각도 및 길이 설정은 게임 내에서 태양과 달의 위치에 따른 그림자의 변화를 시각적으로 표현하는 데 사용돼요.

그림자 각도의 역할

그림자의 각도는 태양과 달의 위치에 따라 달라져요. 태양이 하늘을 따라 이동하면서 그림자의 각도도 변화하며, 이를 통해 현실적인 그림자 효과를 구현할 수 있어요.

그림자 길이의 역할

그림자의 길이는 태양과 달의 높이에 따라 변해요. 태양이 낮게 있을 때 그림자는 길어지고, 태양이 높게 있을 때 그림자는 짧아져요. 이를 통해 게임 내에서 시간의 흐름을 더욱 자연스럽게 표현할 수 있어요.

Inspector 패널의 그림자 설정 내용

  • Shadow Angle: 이 설정은 그림자의 각도를 정의하는 애니메이션 커브를 사용해요. 이 커브는 시간의 흐름에 따라 그림자의 각도가 어떻게 변할지를 정의해요.
  • Shadow Length: 이 설정은 그림자의 길이를 정의하는 애니메이션 커브를 사용해요. 이 커브는 시간의 흐름에 따라 그림자의 길이가 어떻게 변할지를 정의해요.

위에서 살펴본 것과 같이 게임 내에서 태양과 달의 위치에 따른 그림자의 변화를 자연스럽게 표현하기 위해 Shadow Angle과 Shadow Length는 시간의 흐름에 따라 변화하게 설정돼요.

그림자 각도 및 길이 변화 구현하기

그림자 각도 및 길이의 변화는 Shadow Angle과 Shadow Length 애니메이션 커브를 사용해서 구현할 수 있어요. 이 커브들은 시간의 흐름에 따라 그림자의 각도와 길이가 어떻게 변할지를 정의해요.

 

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

void UpdateShadow(float ratio)
{
    var currentShadowAngle = ShadowAngle.Evaluate(ratio);
    var currentShadowLength = ShadowLength.Evaluate(ratio);

    foreach (var shadow in m_Shadows)
    {
        var t = shadow.transform;
        t.eulerAngles = new Vector3(0, 0, currentShadowAngle * 360.0f);
        t.localScale = new Vector3(1, 1f * shadow.BaseLength * currentShadowLength, 1);
    }
}
  • ratio: 현재 시간의 비율을 나타내요. 예를 들어, 0.0은 하루의 시작을, 1.0은 하루의 끝을 의미해요.
  • ShadowAngle.Evaluate(ratio): 현재 시간 비율에 따라 애니메이션 커브에서 적절한 그림자 각도를 가져와 적용해요.
  • ShadowLength.Evaluate(ratio): 현재 시간 비율에 따라 애니메이션 커브에서 적절한 그림자 길이를 가져와 적용해요.

Shadow Angle 및 Shadow Length 설정 예시

애니메이션 커브를 설정할 때, 하루의 시간대에 맞는 각도와 길이 키를 추가해요. 아래는 예시 커브 설정이에요:

  • Shadow Angle:
    • 0% (새벽): 각도 0도
    • 25% (아침): 각도 45도
    • 50% (정오): 각도 90도
    • 75% (저녁): 각도 135도
    • 100% (밤): 각도 180도
  • Shadow Length:
    • 0% (새벽): 길이 2.0
    • 25% (아침): 길이 1.0
    • 50% (정오): 길이 0.5
    • 75% (저녁): 길이 1.0
    • 100% (밤): 길이 2.0

이렇게 설정된 애니메이션 커브를 사용하면, 시간의 흐름에 따라 그림자의 각도와 길이가 자연스럽게 변하게 돼요.

시각적 예시

  • 새벽 (0.0 ~ 0.25): 그림자의 각도는 0도에서 45도로 변하고, 길이는 2.0에서 1.0으로 줄어들어요.
  • 아침 (0.25 ~ 0.5): 그림자의 각도는 45도에서 90도로 변하고, 길이는 1.0에서 0.5로 줄어들어요.
  • 정오 (0.5 ~ 0.75): 그림자의 각도는 90도에서 135도로 변하고, 길이는 0.5에서 1.0으로 늘어나요.
  • 저녁 (0.75 ~ 1.0): 그림자의 각도는 135도에서 180도로 변하고, 길이는 1.0에서 2.0으로 늘어나요.

 

결론

그림자 각도 및 길이 설정은 게임 내에서 태양과 달의 위치에 따른 그림자의 변화를 시각적으로 표현하는 중요한 역할을 해요. 애니메이션 커브를 활용해 시간에 따라 각도와 길이를 변하게 설정하면, 플레이어는 더욱 몰입감 있는 환경에서 게임을 즐길 수 있어요.

 

다음 글에서는 전체 조명과 그림자 통합하기와 다른 요소들을 다루며, 더욱 완성도 높은 주기 구현 방법을 소개할게요. 기대해 주세요!

 

지금까지,

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

감사합니다.

728x90