프로그래밍⚡️/unity

유니티 Light 오브젝트와 스크립트로 다루기

Kwangkki 2022. 5. 22. 15:44

LED 조명 밝기 조절하는 업무를 맡았다.

Point Light 오브젝트로 빛을 조절하면 되는 간단한 작업이다.

 

유니티에서 다양한 Light 오브젝트를 생성할 수 있다.

유니티 라이트 종류

1. Directional Light : 게임 뷰 전체에 균일한 빛을 제공한다. 라이트의 위치와 관계없이 모든 곳을 비추기 때문에 오브젝트 위치를 옮겨도 변화가 없으며 빛이 감소하지도 않는다. 

 

2. Point Light : 포인트 라이트는 전구와 같다고 보면 된다. 오브젝트 위치와 각도에 따라 빛의 양을 다르게 연출할 수 있다. 

 

3. SpotLight : 원뿔 모양으로 조명 영역이 생선된다. 포인트 라이트보다 더 좁은 범위를 비춘다. 공연이나 무대에서 주인공으 비추는 스포트 라이트 조명을 생각하면 된다.

 

4. Area Light : 직사각형의 오브젝트로 한 면에서만 빛이 방출된다. 리얼 타임으로 사용할 수없으며 유니티 Lighting 에서 Baked Lightmaps을 해야 확인할 수 있다.

조명 아이콘이 직관적이고 귀엽다

각 라이트별 더 자세한 설명은 아래 링크에서 확인할 수 있다.

https://docs.unity3d.com/kr/530/Manual/Lighting.html

 

 

이 중 내가 구현할 것은 Point Light 다.

 

먼저 불을 키고 끄는 것을 구현하기 위해 아래와 같은 코드를 작성했다.

[SerializeField] private Light getLight;
public bool flashOn;
    
public void TurnOnOff() {
	if (flashOn)
		getLight.intensity = 0;
	else
		getLight.intensity = 10;
    }

시리얼라이즈필드로 point light를 받아오고 if문으로 밝기 조절하는 intensity 컴포넌트를 0과 10값으로 임의 설정했다.

 

 

OnOff를 테스트해보기 위해 q키를 누르면 꺼지고 켜질 수 있도록 업데이트문을 추가했다.

    private void Update() {
        LedOnOff();
            if (Input.GetKeyDown("q"))
            flashOn = !flashOn;
    }

 

 

q를 누르면 켜지고 꺼진다.