Unity
코딩하는 자동차 : 비전공자도 즐기는 알고리즘 학습_성남자동차박물관
전*원··수정됨 2026.07.21


단순한 블럭 코딩으로 자동차를 움직이는데 얼마나 많은 논리가 필요할까요?
기존의 교육 환경에서는 자동차의 이동 경로를 종이 위에 그리거나, 복잡한 텍스트 코딩 언어를 먼저 배워야 했습니다. 하지만 아이들이나 비전공자에게는 세미콜론 하나보다 "앞으로 한 칸"이라는 직관적인 개념이 더 중요합니다.
이번 자동차 코딩(Car Coding) 프로젝트는 이 과정을 구조적으로 개선하기 위한 시도였습니다. 복잡한 문법 대신 블럭 코딩 장치를 통해, 사용자가 직접 논리를 설계하고 결과를 시각적으로 확인하도록 바꾸는 것이 목표였습니다.
블럭을 올리면, 자동차가 움직이도록
이번 작업의 핵심은 드래그 앤 드롭 기반의 블록 코딩 시스템입니다.
사용자가 화면 오른쪽의 스티커를 드래그하여 스택에 배치하면, 시스템은 이를 분석하여 자동차의 이동 경로를 생성합니다.
구현의 핵심은 코루틴(Coroutine) 기반의 비동기 흐름 제어였습니다. 명령어 하나가 끝날 때까지 기다리지 않고 다음 명령어로 넘어가는 실수를 방지하기 위해, 각 이동과 회전 단계를yield return new WaitForSeconds(delay)를 통해 안전하게 동기화했습니다.


정밀한 그리드 이동, 오차를 허용하지 않도록
기존 구현 방식에서는 타일 기반 이동 시 누적 오차가 발생하는 문제가 있었습니다.
Lerp이동 시 프레임 드롭으로 인해 소수점 단위의 위치 어긋남 발생연속된 이동 명령 실행 시 자동차가 타일 중심에서 조금씩 벗어남
이를 개선하기 위해 보정 시스템을 도입했습니다. 이동 중에는 부드러운 애니메이션을 보여주되, 이동이 완료되는 순간 anchoredPosition을 미리 정의된 타일 중심 값으로 강제 고정하여 오차 누적을 원천적으로 차단했습니다.

단순 자동화가 아니라, 학습의 재정의
이번 작업은 단순히 자동차를 움직이는 기능 구현에 그치지 않습니다.
아이들이 직접 입력자가 되어 "앞으로 가라"고 명령하는 것이 아니라, 전체 로직을 설계하는 설계자가 되도록 구조를 바꾼 작업이었습니다.
반복적인 키보드 입력 대신 직관적인 드래그 연산 도입
복잡한 수학 공식 대신 그리드 기반의 유클리드 이동 활용
성공과 실패를 즉각적인 사운드와 애니메이션으로 피드백
갑작스런 이벤트 발생으로 단조로운 플레이 방지
기능 단위로 보면 하나의 프로젝트이지만, 학습 관점에서는 코딩을 "공부"가 아닌 "놀이" 로 바꾸는 첫 단계라고 생각합니다. 또한, 분석 정확도 개선과 더 다양한 돌발 상황(Ambulance, Pedestrian 등) 로직 고도화를 통해 시스템의 완성도를 높였습니다.
읽기 도구
약 3분 읽기
이 글이 도움이 되었나요?