내일배움캠프 Unity 48일차 TIL - 팀 오오오오오 - 개발일지

Wooooo·2024년 1월 4일
0

내일배움캠프Unity

목록 보기
50/94

[오늘의 키워드]

플레이어 캐릭터에 천천히 걷기와 전력 질주를 추가했다.
위 두 기능을 추가 하면서 InputManager에 조작키 끼리 상호작용을 추가하고 상태에 따른 플레이어 이동속도 계산로직을 추가했다.


[조작키 상호작용]

전력 질주를 하는 도중에 정조준 키를 누르면 전력 질주 키 입력을 끊는다거나 천천히 걷기를 하는 도중에 전력 질주 키를 누르면 천천히 걷기 키 입력을 끊는 방식의 상호작용을 추가했다.

InputManager

        // 키 상호작용
        // ex) 달리다가 정조준하면 달리기 취소. 걷다가 달리면 걷기 취소
        _adsAction.started += _ => _fastRun = false;
        _fastRunAction.started += _ => { _fastRun = true; _walk = false; };
        _fastRunAction.canceled += _ => _fastRun = false;
        _walkAction.started += _ => { _walk = true; _fastRun = false; };
        _walkAction.canceled += _ => _walk = false;

[플레이어 상태에 따른 이동속도 계산 로직]

Move Speed Base/Modifier

    // TODO: Data에서 받아올 것
    [SerializeField] private float moveSpeedBase = 2f;
    [SerializeField] private float moveSpeedModifierSit = 0.5f;
    [SerializeField] private float moveSpeedModifierFastRun = 2f;
    [SerializeField] private float moveSpeedModifierWalk = 0.5f;

기본 이동 속도와 상태에 따른 Modifier들을 선언해줬다. 추후 Data파일에서 읽어오는 구조로 바꿀 생각이다.

Move Speed Value Property

    public float MoveSpeedValue
    {
        get
        {
            float modifiers = 1f;
            if (_input.Walk)
                modifiers *= moveSpeedModifierWalk;
            else if (_input.FastRun)
                modifiers *= moveSpeedModifierFastRun;

            if (_isSit)
                modifiers *= moveSpeedModifierSit;

            return modifiers * moveSpeedBase;
        }
    }

상태에 따른 Modifier들을 모두 곱한 후, 기본 이동속도와 곱해서 return해주는 프로퍼티를 작성했다.

	_controller.Move(MoveSpeedValue * Time.deltaTime * movement);

[구현 영상]

profile
game developer

0개의 댓글