Unity에서 신호등을 만드는 방법
이 튜토리얼은 C#을 사용하여 Unity에서 간단한 신호등 시스템을 만드는 과정을 안내합니다. 신호등을 설정하고, 제어하기 위한 로직을 추가하고, 작동하는 신호등 시스템을 시뮬레이션하는 방법을 배우게 됩니다.
필수 조건
- Unity 인터페이스에 대한 기본 지식
- C# 프로그래밍에 대한 기본적인 이해
- Unity 컴퓨터에 설치됨(최신 버전)
1단계: 장면 설정
먼저, 교통 신호 시스템을 시뮬레이션하기 위해 Unity에 세 개의 조명(빨간색, 노란색, 초록색)이 있는 장면을 설정해야 합니다.
- Unity을 열고 새 프로젝트를 만듭니다.
- Hierarchy 창에서 신호등을 나타내는 3D 객체 3개를 만듭니다. 각 신호등에 Spheres를 사용할 수 있습니다. 이름을 RedLight, YellowLight, GreenLight로 바꿉니다.
- Scene 뷰에서 서로 위에 배치하여 수직 신호등을 시뮬레이션합니다. 필요에 따라 위치와 크기를 조정합니다.
- To make them look like real traffic lights, assign different colors to each sphere:
- RedLight를 선택하고 재질 색상을 빨간색으로 변경합니다.
- YellowLight를 선택하고 재질 색상을 노란색으로 변경합니다.
- GreenLight를 선택하고 재질 색상을 녹색으로 변경합니다.
2단계: 신호등 스크립트 만들기
이제, 신호등 동작을 제어하는 스크립트를 작성하겠습니다. 이 스크립트는 일정한 간격으로 빨간색, 노란색, 초록색 신호를 순환합니다.
- Assets 폴더에서 마우스 오른쪽 버튼을 클릭하고 Create > C# Script를 선택합니다. 이름을 TrafficLightController로 지정합니다.
- 원하는 코드 편집기에서 스크립트를 열고 다음 코드를 작성하세요.
using System.Collections;
using UnityEngine;
public class TrafficLightController : MonoBehaviour
{
public GameObject redLight;
public GameObject yellowLight;
public GameObject greenLight;
public float redLightDuration = 5f;
public float yellowLightDuration = 2f;
public float greenLightDuration = 5f;
private void Start()
{
StartCoroutine(TrafficLightCycle());
}
IEnumerator TrafficLightCycle()
{
while (true)
{
// Red light on
redLight.SetActive(true);
yellowLight.SetActive(false);
greenLight.SetActive(false);
yield return new WaitForSeconds(redLightDuration);
// Green light on
redLight.SetActive(false);
yellowLight.SetActive(false);
greenLight.SetActive(true);
yield return new WaitForSeconds(greenLightDuration);
// Yellow light on
redLight.SetActive(false);
yellowLight.SetActive(true);
greenLight.SetActive(false);
yield return new WaitForSeconds(yellowLightDuration);
}
}
}
이 스크립트는 빨간색, 초록색, 노란색 불빛이 순서대로 켜지고 꺼지는 간단한 주기를 정의합니다.
3단계: 스크립트에 조명 할당
이제 스크립트가 준비되었으므로 조명 객체를 스크립트에 연결하여 어떤 조명을 제어할지 알려야 합니다.
- Main Camera를 선택하거나 스크립트를 보관할 빈 GameObject를 씬에 만듭니다. 이름을 TrafficLightController로 지정합니다.
- Inspector에서 Add Component를 클릭하고 TrafficLightController 스크립트를 연결합니다.
- Assign the traffic light spheres to the script:
- RedLight 객체를 스크립트의 redLight 필드로 끌어다 놓습니다.
- YellowLight 객체를 yellowLight 필드로 끌어다 놓습니다.
- GreenLight 객체를 greenLight 필드로 끌어다 놓습니다.
4단계: 신호등 시스템 테스트
이제 신호등 시스템을 테스트하고 모든 것이 예상대로 작동하는지 확인할 차례입니다.
- Unity 편집기 상단의 재생 버튼을 누르세요.
- 교통 신호 시스템이 작동하는 모습을 관찰하세요. 빨간색, 초록색, 노란색 신호는 스크립트에서 정의한 시간 간격에 따라 순환해야 합니다.
모든 것이 제대로 작동하면 5초 동안 빨간 불이 켜지고, 그다음 5초 동안 녹색 불이 켜지고, 그다음 2초 동안 노란 불이 켜지며 반복되는 것을 볼 수 있습니다.
5단계: 신호등 사용자 지정
각 신호등의 시간 간격을 변경하여 신호등 시스템을 쉽게 사용자 지정할 수 있습니다. Inspector 창에서 redLightDuration, yellowLightDuration, greenLightDuration 필드를 수정하여 각 신호등이 켜져 있는 시간을 변경합니다.
예를 들어, 교차로의 혼잡함을 시뮬레이션하기 위해 빨간불이 더 오래 켜져 있게 하거나, 더 빠른 전환을 위해 노란불 지속 시간을 조정할 수 있습니다.
결론
Unity에서 간단한 신호등 시스템을 성공적으로 만들었습니다. 이 튜토리얼을 따라하면 C#로 GameObjects를 제어하고 실제 시스템을 시뮬레이션하기 위해 타임드 루프를 구현하는 방법을 배웠습니다. 여기에서 보행자 신호등, 카운트다운 타이머 또는 더 복잡한 교통 규칙과 같은 더 많은 기능을 추가하여 이 프로젝트를 확장할 수 있습니다.