본문 바로가기

무제_LR

InputProgress(연타), InputQTE 추가

 

 

튜토리얼을 구상하다가 스토리 다이어로그 및 스테이지 컨셉까지 이어지게 되어 위와 같은 시스템을 만들었습니다.

좌뇌 담당인 왼쪽이는 QTE 시스템,

우뇌 담당인 오른쪽이는 연타 시스템을 활용할 예정입니다.

 

  public class InputProgressData
  {
    [field: SerializeField] public InputProgressEnum.InputProgressUIType UIType { get; private set; }
    [field: SerializeField] public bool Failable {  get; private set; }
    [field: SerializeField][field: Range(0.0f, 1.0f)] public float BeginValue { get; private set; } = 0.5f;
    [field: SerializeField] public float DecreaseValuePerSecond { get; private set; }
    [field: SerializeField] public float IncreaseValueOnInput { get; private set; }
  }	//Progress의 중심 데이터

public interface IInputProgressService	//로직 실행 인터페이스
{	//LocalManager 하위에 존재
  public void Play(
    InputProgressEnum.InputProgressUIType type,
    CharacterMoveKeyCodeData keyCodeData, 
    InputProgressData data,
    Transform followTarget,
    UnityAction<float> onProgress, 
    UnityAction onComplete,
    UnityAction onFail);

  public void Play(
    InputProgressEnum.InputProgressUIType type,
    CharacterMoveKeyCodeData keyCodeData,
    InputProgressData data,
    Vector3 worldPosition,
    UnityAction<float> onProgress,
    UnityAction onComplete,
    UnityAction onFail);

  public void Stop();
}

public interface IInputProgressUIService
{	//Progerss 전용 UI 서비스
  public UniTask<IUIInputProgressPresenter> GetPresenterAsync(
    InputProgressEnum.InputProgressUIType type,
    Transform followTarget);

  public UniTask<IUIInputProgressPresenter> GetPresenterAsync(
    InputProgressEnum.InputProgressUIType type,
    Vector2 canvasPosition);
}

위 영상에 나오는 회복 아이템 뿐만 아니라 열쇠형 트리거, 상태이상 등 다양한 곳에서 활용이 가능하기 때문에

데이터 테이블 및 인터페이스화시켰습니다.

  public interface IUIInputProgressPresenter : IUIPresenter
  {
    public void SetFollowTransform(Transform transform);

    public void SetPosition(Vector2 screenPosition);

    public void OnProgress(float normalizedValue);

    public void OnComplete();

    public void OnFail();
  }

Progress 전용 UI Presenter도 만들었습니다.

 

QTE 관련 로직 및 UI도 위와 거의 동일합니다.

 

조금 피곤해서 설명이 상당히 빈약하지만 암튼 나름 조금 고생했읍니다,,,,,

 

암튼 데이터들을 테이블화 시키고 인터페이스로 로직도 나누니 이후 활용이 훨씬 편해질 것 같아 기분이 좋네요.

 

다음에 할거:

당장 사용할 생각은 아니다만 상호작용 장애물(DynamicObstacle) 구현해놓기