낮과 밤을 만들어 보아요~
재미있는 라이팅~ 우하하
DayAndNight 라는 빈 오브젝트를 만들고
거기 원래 잇던 다이렉션라이트를 넣고 복사해줌
원래 있던 다이렉션라이트가 Sun, 복사해준걸 Moon으로 하고
Moon의 라이트 색을 밤의 푸른색으로 바꿔준다
DayNightCycle 스크립트를 만들고 DayAndNight에 컴포넌트로 달아준다.
public class DayNightCycle : MonoBehaviour
{
[Range(0.0f, 1.0f)]
public float time; // 시간 0프로~100프로가 되는것이다
public float fullDayLength;
public float startTime = 0.4f; //time이 0.5일때 정오
private float timeRate;
public Vector3 noon; // 정오 (90,0,0)
[Header("Sun")]
public Light sun;
public Gradient sunColor; //그라디언트로 서서히 바뀜
public AnimationCurve sunIntensity;
[Header("Moon")]
public Light moon;
public Gradient moonColor;
public AnimationCurve moonIntensity;
[Header("Other Lighting")]
public AnimationCurve lightingIntensityMultiplier; //빛 조절
public AnimationCurve reflectionIntensityMultiplier; //반사
private void Start()
{
timeRate = 1.0f / fullDayLength;
time = startTime;
}
private void Update()
{
time = (time + timeRate * Time.deltaTime) % 1.0f;
UpdateLighting(sun, sunColor, sunIntensity); //Sun호출
UpdateLighting(moon, moonColor, moonIntensity); //Moon호출
RenderSettings.ambientIntensity = lightingIntensityMultiplier.Evaluate(time); // 세팅값 접근하려면 RenderSettings. 해줘야함
RenderSettings.reflectionIntensity = reflectionIntensityMultiplier.Evaluate(time);
}
void UpdateLighting(Light lightSource, Gradient colorGradiant, AnimationCurve intensityCurve)
{
float intensity = intensityCurve.Evaluate(time);
lightSource.transform.eulerAngles = (time - (lightSource == sun ? 0.25f : 0.75f)) * noon * 4.0f; //Sun time 0.5 정오일땐 90도가 되야하는데 360*0.5는 180도가 나와서 0.25를 빼줌
lightSource.color = colorGradiant.Evaluate(time); //Noon 일때 90도를 곱해주는데 90에 0.25곱해도 90이 아니니 4 를 또 곱해줌
lightSource.intensity = intensity;
GameObject go = lightSource.gameObject; //해가 넘어간경우 꺼줘야함
if (lightSource.intensity == 0 && go.activeInHierarchy) //밝기가 0이 됐는데, 하이어라키에선 켜져있다면
go.SetActive(false); //꺼주세용
else if (lightSource.intensity > 0 && !go.activeInHierarchy) //밝기가 0보다 큰데, 하이어라키에서 안켜져있으면
go.SetActive(true); //켜주세용
}
}
그리고 인스펙터창에서 Full Day Length 이런거 조절해주고 Sun이랑 Moon 각자 자리에 넣어주기
Sun Intensity 더블클릭하면 커브 조절하는 창이 뜬다!
Sun
첫번째
time 0.25일때
value 0
중간
time 0.5 일때
value 1
마지막
time 0.75 일때
value 0
Moon
time 0
value 0.2
time 0.2
value 0
time 0.8
value 0
time 1
value 0.2
Other Lighting
0,0 0.4,1 0.6,1 1,0
위 아래커브 둘 다 똑같이 해주기
색깔 그라데이션까지 넣어주면 이렇게 됩니다~
인텐시티값이랑 맞춰서 색깔 적용해줬음
그럼 이제 낮과 밤을 만들 수 있음
이렇게 커브 넣어서 조절하는 거인지 몰랐는데 아주 신기하다!
'제출용 > TIL' 카테고리의 다른 글
내일배움캠프 42일차 TIL + 인터페이스 (0) | 2024.06.14 |
---|---|
내일배움캠프 41일차 TIL + For문 / 별 찍기 (1) | 2024.06.13 |
내일배움캠프 39일차 TIL + 컴퓨터 UI 사용하기 (1) | 2024.06.11 |
내일배움캠프 38일차 TIL + 거울 포탈 (인 척) (0) | 2024.06.10 |
내일배움캠프 37일차 TIL + 라이팅 (1) | 2024.06.07 |