728x90
반응형
코루틴을 이용하여 라이트의 값을 변경함.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LightControl : MonoBehaviour
{
private float currentValue = 0f; // 현재 빛의 밝기 값
private float duration = 1f; // 밝기 변화에 걸리는 시간 (초)
private bool brightness = false; // 빛의 밝기가 높아지고 있는지 여부
private void Start()
{
StartCoroutine(ToggleBrightness()); // 토글 코루틴 시작
}
private IEnumerator ToggleBrightness()
{
while (true)
{
if (!brightness) // 빛의 밝기가 낮을 때
{
yield return StartCoroutine(LightControlONCoroutine()); // 빛을 밝게 하는 코루틴 실행
}
else
{
yield return StartCoroutine(LightControlOFFCoroutine()); // 빛을 어둡게 하는 코루틴 실행
}
yield return new WaitForSeconds(0.25f); // 0.25초 대기
}
}
private IEnumerator LightControlONCoroutine()
{
float elapsedTime = 0f;
while (elapsedTime < duration)
{
currentValue = Mathf.Lerp(10f, 20f, elapsedTime / duration); // 10에서 20으로 밝기 증가
elapsedTime += Time.deltaTime;
GetComponent<Light>().range = currentValue; // 빛의 밝기 값을 설정
yield return null;
}
brightness = true; // 밝기가 증가 중임을 표시
}
private IEnumerator LightControlOFFCoroutine()
{
float elapsedTime = 0f;
while (elapsedTime < duration)
{
currentValue = Mathf.Lerp(20f, 10f, elapsedTime / duration); // 20에서 10으로 밝기 감소
elapsedTime += Time.deltaTime;
GetComponent<Light>().range = currentValue; // 빛의 밝기 값을 설정
yield return null;
}
brightness = false; // 밝기가 감소 중임을 표시
}
}
728x90
반응형
'C#' 카테고리의 다른 글
[유니티] 오브젝트들을 거쳐가는 라인렌더러 생성 (0) | 2023.08.31 |
---|---|
[유니티]방향키로 움직이고 마우스로 화면 회전하기 (0) | 2023.08.29 |
키보드 입력 테스트 프로그램 ( 키 입력 시각화 프로그램 ) (5) | 2020.01.28 |
키보드 입력 시각화 프로그램 ( 배포 ) (0) | 2020.01.10 |
C# 키 입력 시각화 ( 키 다운, 키 업, 폼을 투명하게) (0) | 2019.11.04 |