[Unity]02. 오브젝트와 상호작용 with FSM

정국경·2024년 6월 30일
0

Unity

목록 보기
4/8

전에 설계한 걸 바탕으로 Light 오브젝트Heavy 오브젝트를 움직이는 구현을 해보았다.

Light Object

Pull 상호작용 시 Player의 주위를 공전하듯 붙어있어야 한다. 이때 마우스의 위치에 따라 오브젝트의 위치가 변한다.

Push 상호작용 시 마우스 위치로 던진다.

Heavy Object

Pull 상호작용 시 Player의 xz 평면 이동에 따라 움직인다. 이때 Player는 y축 조작이 제한되고 xz평면 이동만 가능하다.

Push 상호작용 시 Object를 그 자리에 놓는다.

필요한 Scriptable Objects

Actions
Pull Light / Pull Heavy / Push Light / Push Heavy

Conditions
is Pulling Light / is Pulling Heavy / is Pushing

States
Pull Light / Pull Heavy / Push Light / Push Heavy
+
Jump Ascending With Light / Jump Ascending With Heavy

저번에 설계했듯
All State -> Pull
Pull -> Push
Push -> All State
구조로 이루어진다.
이때 Light Object를 Pull 한 상태에서 점프를 구현하기 위해 Pull Light -> Jump Dis/Ascending With Light 를 추가한다.

문제점들

오브젝트들이 벽을 뚫음.
Light 오브젝트는 어차피 붙어다니니까 던질 때만 고려하면 해결 가능할 것 같음.
Heavy 오브젝트가 벽에 부딪히면 멈춰야 하는데 뚫어버림. Rigidbody로 하려니 잘 안됨. Player가 (1, 0, 0), (-1, 0, 0), (0, 0, 1), (0, 0, -1) 중에 어떤 방향인지를 인지하고 그 방향으로 잘 밀면 되려나.

0개의 댓글