본문 바로가기
Development/프로젝트 (기록용)

[2019.] 재소자 FSM

by 박수무당벌레 2025. 6. 9.

ㄱ. FSM
 상태다이어 그램

Prisoner(재소자)

 

 Prisoner의 주요 상태클래스 설명 (FreeTimeState와 BedTimeState)

FreeTimeState Class
 
- 기본 행동은 Wandering
 
- avoidColliding
죄수가 배회(Wandering) 행동을 할 때, 벽을 피하는 용도의 bool 변수
true가 되면 반대방향으로 돌아간다
 
- nearby
죄수의 영향범위 콜라이더에 다른 죄수가 닿았을 때 1씩 추가,
nearby 값이 클수록 가중치를 받아 교화 진행도를 낮춘다 (빨간게이지가 UP)
 +(7 * (nearby * 0.2f))
 
- 교화활동
죄수가 교화활동을 할 때,  nearby의 크기와 반비례해서 교화 진행도가 높아진다 (파란게이지가 UP)
 +((7 - nearby) * 0.2f)
 
- 10.0f 시간이 지나면, FreeTimeState으로 상태전이
 
- drag
죄수를 클릭, 드래그 상태일 때 true가 되는 bool 변수
마우스 클릭을 해제했을 때 false가 된다
독방 위치에 죄수를 드랍하게 되면, SolitaryCellState로 상태 전이

 
BedTimeState Class
 
- OnEnter에서 진입동작으로 랜덤한 위치의 방까지 이동 (Waypoint 이용)



- drag
위와 동일
 
- arrival
방까지 도착하면 true가 되는 bool 변수
도착 후 랜덤으로 RestState, TalkState으로 상태 전이
 
- 10.0f 시간이 지나면, FreeTimeState으로 상태전이
 
- OnExit에서 진출동작으로 Waypoint를 이용해서 운동장으로 나간다