Unity DOTS/따라하며 배우기

UNITY DOTS - State Machine(상태 머신) 만들기 #1 개요

개양반 2022. 8. 5.

EntityComponentSystemSamples의 State Machine 만들기를 분석하는 글이다. 

샘플프로젝트는 https://github.com/Unity-Technologies/EntityComponentSystemSamples 로 가면 다운받을 수 있다.


게임 진행방식

Guard는 Waypoint를 순찰한다. Waypoint에 도착하면 잠시 대기를 하고 다음 Waypoint로 이동하는 것을 반복한다. 순찰 중에 원뿔 범위 내에 Player가 존재하면 추격하고 원뿔 범위 밖으로 Player가 도망치면 잠시 대기하다가 다시 Waypoints를 순찰하는 간단한 게임이다.


해당 샘플로 알 수 있는 것들

1. Unity DOTS 에서 조건에 따라 상태가 변경되는 State Machine을 만드는 방법

2. Guard의 상태에 따라 Material을 변경하는 방법


State Machine Sample의 구성 살펴보기

1. Player 관련 구성

Player는 이동에 대한 것만 존재한다. MovePlayerSystem 에서 Input으로 전달받은 x, y값을 토대로 Player를 이동시킨다. 

 

2. Guard 관련 구성

Guard와 관련된 System은 총 5개가 존재한다. 

CheckReachedWaypointSystem 목적지까지 도달했는지 체크하고 도달했으면 Idle 상태로 변경한다.
LookForPlayerSystem Player가 원뿔 범위 내에 존재하는지 체크하고 조건에 따라 상태를 변경한다.
MoveTowardTargetSystem 목적지까지 이동시키는 시스템
StateTransitionVisualizationSystem 상태에 따라 Guard의 Material을 변경한다. 
UpdateIdleTimerSystem 대기 지속시간을 체크하고 그에 따라 상태를 변경한다.

 


분석하고 느낌점

기존의 객체 지향 방식으로 설계된 코드를 분석할 때는 상속 관계 등 구조를 파악해야 했기에 분석이 어려웠는데 데이터 지향 코드를 분석하니깐 완전 신세계였다. System 으로 행동이 나눠지기 때문에 해당 System이 어떤 기능인지 그리고 해당 System에서 사용되는 Componet를 어떤 객체가 들고 있는지 파악하면 되므로 분석이 상당히 빨랐다. 

댓글

💲 추천 글