알토의 모험처럼 odyssey에서도 시간이 지남에 따라
낮밤이 바뀌게 만드려고 한다!
위 그림처럼 우선은 테스트로 낮부터 저녁까지 구현해보려고 한다..
하늘 그라데이션 셰이더
https://www.youtube.com/watch?v=O62Iio-Qvjs&list=PLsPC1W5E9IRTc-Urd0Y1OaXQSv1SzxVwp&index=7
이 강의를 참고해서 셰이더를 만들었다.
그냥 튜토리얼 설명대로 똑같이 만들었다^___^
이렇게 하늘에 그라데이션이 생겼다!
하늘/바다 색상 변경
https://forum.unity.com/threads/2d-day-night-cycle-and-weather-system-a-la-altos-adventure.377959/
전반적으로 이 글에 있는 내용을 많이 참고했다.
public class DayNightController : MonoBehaviour
{
[Range(0,1)]
public float timeSlider;
public Renderer skyGradient;
public Gradient skyTopColor;
public Gradient skyMiddleColor;
public Gradient skyBottomColor;
public SpriteRenderer oceanBase;
public SpriteRenderer oceanShadow;
public Gradient oceanBaseColor;
public Gradient oceanShadowColor;
void UpdateSkyColor()
{
skyGradient.material.SetColor("_TopColor", skyTopColor.Evaluate(timeSlider));
skyGradient.material.SetColor("_MiddleColor", skyMiddleColor.Evaluate(timeSlider));
skyGradient.material.SetColor("_BottomColor", skyBottomColor.Evaluate(timeSlider));
}
void UpdateOceanColor()
{
oceanBase.color = oceanBaseColor.Evaluate(timeSlider);
oceanShadow.color = oceanShadowColor.Evaluate(timeSlider);
}
void Update()
{
UpdateSkyColor();
UpdateOceanColor();
}
}
그레디언트를 이용해서 구현했다.
slider의 값에 맞게 하늘과 바다의 색이 변하게 구현했다!
Global Light
하늘이 어두워지는 만큼 구름, 지형, 나무, 풀 등의 사물도 어두워져야 한다.
원근감에 따라 어두워지는 정도를 다르게 하고 싶어서
Global Light를 여러개로 나눠서 구성했다.
구현은 위에서 했던 것과 비슷하게
slider의 값에 비례해서 색상이 바뀌게 구현했다.
Spot Light
더 자연스럽게 만들기 위해 환경광도 구현했다..
Global Light와 마찬가지로 구름레이어, 지형레이어, 앞레이어로 나눠서
빛의 양을 조절했다.
추가로 이때 AnimationCurve로 해의 위치도 움직이게 했다!
밤까지 구현
저녁까지 구현한게 괜찮은 것 같아서
똑같은 방식으로 밤까지 구현했다!
'odyssey' 카테고리의 다른 글
#16 odyssey 개발일지 : 캣멀롬 스플라인으로 지형 보간 (0) | 2023.07.29 |
---|---|
#15 odyssey 개발일지 : 지형 생성기 만들기 (0) | 2023.07.24 |
#13 : odyssey 개발일지 : 바다 셰이더 만들기 (0) | 2023.07.17 |
#12 odyssey 개발일지 : 셰이더 그래프로 지형 외각선 만들기 (0) | 2023.06.24 |
#11 odyssey 개발일지 : parallax scrolling (0) | 2023.06.22 |