▣ 코드설명
DoorBase 클래스는 문을 제어하는 기본 클래스입니다. 이 클래스는 문이 정방향으로 열렸는지, 역방향으로 열렸는지를 관리하고, 그에 따라 닫기 애니메이션도 다르게 재생하도록 설계되었습니다.
주요 구성 요소:
isOpen:
문이 현재 열려 있는지 여부를 나타내는 bool 변수입니다.
문이 열렸다면 true, 닫혔다면 false입니다.
LastOpenedForward:
문이 마지막으로 정방향으로 열렸는지 추적하는 bool 변수입니다.
true면 문이 정방향으로 열렸고, false면 문이 역방향으로 열렸음을 나타냅니다.
문이 닫힐 때 이 값을 참고하여 적절한 닫기 애니메이션(CloseForward, CloseBackward)을 선택합니다.
주요 메서드:
Open(Transform player):
플레이어의 위치를 기준으로 문을 열 때, 플레이어가 문 앞에 있으면 정방향으로 열고, 뒤에 있으면 역방향으로 열도록 설정합니다.
문이 열리는 방향에 따라 LastOpenedForward 값이 업데이트되며, 이를 통해 문이 나중에 어떻게 닫혀야 할지 결정합니다.
CloseForward(Transform player):
문이 정방향으로 열렸을 때, 문을 닫는 애니메이션을 실행하는 메서드입니다.
애니메이터의 CloseForward 트리거를 설정하여 정방향 닫기 애니메이션을 재생합니다.
CloseBackward(Transform player):
문이 역방향으로 열렸을 때, 문을 닫는 애니메이션을 실행하는 메서드입니다.
애니메이터의 CloseBackward 트리거를 설정하여 역방향 닫기 애니메이션을 재생합니다.
IsPlayerInFront(Transform player):
플레이어의 위치가 문 앞에 있는지, 뒤에 있는지를 판별하는 메서드입니다.
문이 바라보는 방향(transform.forward)과 플레이어의 위치 벡터를 비교하여 결정합니다.
이 메서드를 통해 문이 정방향으로 열릴지 역방향으로 열릴지 판단합니다.
▣ 코드설명
PlayerManager 클래스는 플레이어가 문이나 아이템과 상호작용하는 동작을 처리합니다. 특히, 문과의 상호작용에서는 문이 열릴 때 방향을 기억하고, 닫을 때 올바른 방향으로 닫히도록 로직을 개선했습니다.
주요 구성 요소:
lastOpenedForward:
DoorBase의 LastOpenedForward 값과 연동되어, 플레이어가 마지막으로 문을 열 때 문이 정방향으로 열렸는지 여부를 추적합니다.
문을 닫을 때 이 값을 참고하여 CloseForward 또는 CloseBackward 메서드를 호출합니다.
주요 메서드:
GetItem():
플레이어가 E 키를 눌렀을 때 실행되는 함수로, 문과 아이템을 모두 처리합니다.
문이 감지되면 문과 상호작용하고, 문이 열려있을 때는 열렸던 방향에 따라 적절한 닫기 애니메이션을 재생합니다.
문이 없으면 아이템을 획득하는 로직을 처리합니다.
문이 열릴 때 문이 마지막으로 열린 방향을 lastOpenedForward 변수에 저장하여, 나중에 문을 닫을 때 참조합니다.
문과의 상호작용 로직:
문이 감지되면, 문이 열려있는지 확인합니다.
문이 열려있다면 lastOpenedForward 값을 확인하여 정방향 닫기 또는 역방향 닫기 애니메이션을 실행합니다.
문이 닫혀있다면 Open() 메서드를 호출하고, 이때 문이 열리는 방향을 lastOpenedForward에 저장합니다.
'[ Unity ] > - 유니티 실습' 카테고리의 다른 글
유니티 비활성화 오브젝트 찾는 함수(GetChild) (0) | 2024.10.30 |
---|---|
유니티 특정 씬(scene)이 로드된 후에 호출되는 콜백 함수 (0) | 2024.10.29 |
유니티 Zombie AI Damage (0) | 2024.10.21 |
유니티 Zombie AI NavMeshLink (0) | 2024.10.21 |
유니티 Weapon Fire Delay (0) | 2024.10.19 |
댓글