Team-Futurity / Futurity

청강문화산업대학교 3학년 졸업 작품 프로젝트
0 stars 5 forks source link

EffectManager, 콤보 트리 시각화, 플레이어 최종 행동 반환 클래스 생성 #76

Closed Budy123 closed 1 year ago

Budy123 commented 1 year ago

Effect Controller

설명


기존 문제점


변경 사항


개선 예정 사항


사용법

Effect Datas Scriptable Obeject

image 먼저 위와 같이 EffectDatas Scriptable Object를 만들어 올바른 이펙트를 할당할 필요가 있다. 추후 Effect Controller에서는 Effect Type과 Effect Target을 기반으로 구분하는데, 어차피 스크립트 작성자가 구분하는 용도이므로, 본인의 마음대로 해도 기능적으로 문제는 없다. 그러나 가급적이면 올바르게 할당하길 바라며, Effect Type, Effect Target이 모두 같은 요소를 추가해도 되지만 가급적이면 그러지 않길 권고한다.

Effect List에는 해당 상황에 맞는 이펙트를 넣어야 하며, 보통 하나의 이펙트만 넣으나, Level Effect로 등록을 원할 경우에는 레벨에 따라 여러 개를 넣어야 한다.

아무튼 이렇게 EffectDatas에 이펙트를 모두 넣었다면 다음은 스크립트로 넘어간다. image 우선 위와 같이 앞서 만든 SO를 넣어 Effect Controller를 찾아주어야 한다.

Active Effect

image 이후 EffectController의 ActiveEffect 메소드를 실행하여 이펙트를 생성할 수 있다. 다만 넣어주어야 할 인자가 상당히 많은데 이는 해당 메소드의 summary로 설명을 대체한다. image

Level Effect

또한 LevelEffect로 등록하여 일일이 해제하고 생성할 필요 없이, 메소드를 사용해 간편하게 단계적인 이펙트를 관리할 수 있다. image ActiveEffect 메소드를 호출하면 해당 이펙트의 키를 되돌려주는데, 이를 이용해 LevelEffect로 등록할 수 있다.

image 이후 이펙트 키와 설정할 단계를 입력해주면 해당 단계에 맞는 이펙트로 변환되어 생성된다.

Tracking

image 또한 위와 같이 이펙트 키와 추적(Tracking) 대상을 인자로 넣고 이펙트가 대상을 계속 따라가도록 설정할 수 있다.

RemoveEffect

이펙트를 생성했으면 지워주어야 하는 순간도 생긴다. 이때는 RemoveEffect 메소드를 사용해야 한다. image

사용법은 간단하다. 이펙트 키만 입력해주면 간단히 지워진다. 그러면 남은 두 매개변수는 무엇일까? 이건 Tracking과 Leveling관련 설정값이다.

우선 Tracking의 경우, RemoveEffect를 호출할시 등록이 해제되는데, 이때 몇 번째 인덱스에 등록된 값인지 알고 있다면 해당 매개변수를 통해 삭제해줄 수 있다. 다만 일반적인 상황에서 우리가 이걸 알지는 못하기에 null로 두면 알아서 처리해준다.

또한 Leveling의 경우, Tracking과 달리 자동으로 등록이 해제되지는 않는데, 세번째 매개변수인 isUnleveling을 true로 넘겨주면 레벨링 등록을 해제해준다다. image

Effect Key 클래스

파라미터

IsLevelEffect

IsTrackingEffect

SetLevelEffect

SetTrackingEffect

Player Command Graph

설명


기존 문제점


변경 사항


사용법

퓨처리티 - 프로그래밍 - 티켓 - [플레이어] Combo 시각화 작업 참고 or 개인 복제 문서 참고 (https://rune-hickory-a8e.notion.site/Combo-8c0641fc5ed2412eb64f0e70f2e24b19?pvs=4)

플레이어 최종 행동 반환 클래스

설명


기존 문제점


사용법

PlayerInputManager

우선 플레이어 최종 행동 값을 얻어오기 위해서는 Player Input Manager에 접근을 해야한다.

image Player Input Manager는 Player Prefab에 붙어 있으며, 두 가지의 파라미터를 가진다. pc는 PlayerController를 참조하는 파라미터이고, 다른 하나는 키 값을 저장할 프레임의 수이다. 예를 들어, 사진과 같이 3이라 설정되어 있다면, 현재 프레임을 n번째 프레임이라 할때, n-2, n-1, n번째에서의 입력이 저장되어 있다고 생각하면 된다.

어찌됐든 Player Input Manager에 접근했다면 두 가지 메소드를 통해 입력 값을 받아올 수 있다. image 하나는 인덱스로 접근하는 방식, 다른 하나는 가장 최근의 입력 값에 접근하는 방식이다. 필요에 따라 선택하면 되며, 인덱스로 접근할 경우 가장 최근 값은 앞서 설정한 키 값을 저장할 프레임의 수이므로 이 값이 3이라면, 인덱스 기준으로 2를 입력하면 된다. 마찬가지로, 0을 입력하면 가장 최근의 입력에서 두 프레임 이전의 값이다.

또한 반환 값은 모두 Queue 형태인데, 이는 원본 데이터에서 복사된 값이므로 원하는대로 활용해도 문제없다.

주의할 점

프로토콜

사용자는 Queue 내부에서 원하는 값을 찾아 해석하면 되는데, 이 값은 모두 string이다. 이는 모두 정해진 프로토콜에 따른 데이터를 string형태로 바꾸어 저장한 것인데 그 프로토콜은 다음에서 확인할 수 있다.

퓨처리티 - 프로그래밍 - 티켓 - [플레이어] 최종 행동 반환 클래스 or 개인 복제 문서 (https://rune-hickory-a8e.notion.site/ed179ab2555a4a83aaefef91380655d7?pvs=4)