케이디님의 유니티 입문 강좌를 듣고 정리한 내용입니다.
씬에서 필수적인 광원은 3D 환경의 컬러와 분위기를 정의한다. 비쥬얼 퀄리티를 높이는 가장 효과적인 방법이다.
Type : 광원의 종류.
Color : 광원의 색
Mode : 광원 연산 모드.
Intensity : 광원의 세기.
Indirect Multiplier : 간접광의 세기. 1보다 낮은 값으로 설정하면 반사광이 반사될 때마다 점점 어두워지고, 1보다 높은 값으로 설정하면 반사될 때마다 빛이 더 밝아진다.
Cookie : 빛을 방해하는 텍스처. (구름 같은)
Draw Halo : 후광.
Flare : 광원을 바라보면 보이는 렌즈 플레어.
Render Mode : 광원의 렌더링 우선 순위 설정.
Culling Mask : 선별적으로 오브젝트 그룹을 광원의 영향에서 제외.
Shadow Type : 그림자 종류. No, Hard, Soft 세 가지가 있다.
Strength : 그림자 세기. 0~1 이며 기본값은 1이다.
Resolution : 그림자 해상도. 높을수록 정확하다.
Bias : 그림자를 밀어냄. 버그 체크 용
Normal Bias : 그림자를 축소시킴. 버그 체크 용
Near Plane : 그림자를 렌더링할 때의 전방 절단면(near clip plane) 값을 설정
Window > Rendering > Lighting 에 들어가면 더 자세하게 설정할 수 있다.
고장난 전구처럼 깜박깜박 거리는 광원을 만드는 스크립트이다. Light type은 Spot나 Point로 해야한다.
public class Test7 : MonoBehaviour
{
private Light theLight;
private float targetIntensity;
private float currentIntensity;
void Start()
{
theLight = GetComponent<Light>();
currentIntensity = theLight.intensity;
//목표 광원 강도
targetIntensity = Random.Range(0.4f, 1f);
}
// Update is called once per frame
void Update()
{ // 타겟과 현재 값의 차이가 0.01보다 크면
if (Mathf.Abs(targetIntensity - currentIntensity) >= 0.01)
{
if (targetIntensity - currentIntensity >= 0)
{ // 현재 강도를 크게
currentIntensity += Time.deltaTime * 3f;
}
else
{ //현재 값을 작게
currentIntensity -= Time.deltaTime * 3f;
}
// 값을 light 컴포넌트의 intensity값으로 넣기
theLight.intensity = currentIntensity;
// range도 증가
theLight.range = currentIntensity+10;
}
else
{
targetIntensity = Random.Range(0.4f, 1f);
}
}
}