1 minute read

작업 내용

유닛 조작 UI 추가

스크린샷 2024-07-30 194406
왼쪽 밑에 유닛 조작을 하게 해주는 UI를 추가하였다.
코드는 UserUnitController에 추가하였다.

public void OnClickReadyToAttack()
{
    if (selectedUserUnits.Count > 0)
    {
        ClearReadyForActions();
        targetPositionMarker.gameObject.SetActive(false);
        SetReadyToAttack(true);
        //unitAttackButton.Select();
    }
}
public void OnClickReadyToMove()
{
    if (selectedUserUnits.Count > 0)
    {
        ClearReadyForActions();
        targetPositionMarker.gameObject.SetActive(true);
        isReadyToMove = true;
        //unitMoveButton.Select();
    }
}
public void OnClickHold()
{
    if (selectedUserUnits.Count > 0)
    {
        foreach (UserUnit unit in selectedUserUnits)
        {
            unit.Hold();
        }
        ClearReadyForActions();
        //unitHoldButton.Select();
    }
}

위에 버튼들을 위해 기존에 InputSystem 이벤트에 구독해둔 함수에 내용을 따로 떼서 함수로 분리했다.
그래서 기존에 방식대로 마우스나 A, H 로 이동, 공격, 홀드가 가능하고 추가로 버튼을 누르고 좌클릭으로 해당 위치로 이동, 공격도 가능하다.
해당 UI는 유닛을 1마리라도 선택하기 전에는 회색으로 상호작용 불가능하고 선택하면 상호작용할 수 있게 하였다.

추가 작업

하면서 기존에 내가 만들어둔 ISelectable 리스트에 똑같은 기능을 하는데 GameObject로 다른 팀원이 만들어둔 리스트를 하나의 UserUnit 리스트로 통합하고, StateMachine에 Tracking하는 중에 홀드하면 타겟지정이 안풀려서 새로운 적을 공격 안하는 버그를 수정하는 등 몇가지 코드 구조랑 버그 수정도 했다.
추가로 오늘 맵을 새로 만들어서 거기에 맞게 NavMesh랑 그리드를 새로 만들어줬다.
스크린샷 2024-07-30 205932

마무리

오늘은 맵이 바뀌었고 내가 만들던 내용도 다 만들어서 아주 좋았다. 추가로 팀원 권태하님이 튜토리얼을 만들었는데 아주 보기좋게 잘만들었다. 다음에는 자동 전투를 구현해볼까 한다. 계획은 다음과 같다 :
유닛이 자동으로 돈이 찰 때 마다 랜덤으로 생성되고, 사거리가 짧을 수록 맵의 끝 자락 쪽에 우선 위치되고 홀드된다. 생성되면 바로 이동시키고, 이동이 끝나면 홀드시킨다.(StateMachine의 State값으로 확인)