1 minute read

작업 내용

오늘은 추가로 유닛을 제작했다.
다음은 새로운 유닛이 가진 슬로우 효과 파트이다.

public void EffectToEnemy(Enemy enemy)
{
    if (slowedEnemies.ContainsKey(enemy))
    {
        // 이미 느리게 만든 적의 경우, 기존 코루틴을 중지하고 새로 시작
        StopCoroutine(slowedEnemies[enemy]);
    }
    else
    {
        // 처음 느리게 만드는 적의 경우
        enemy.enemyMovement.moveSpeed *= 0.5f;
    }

    // 새로운 코루틴을 시작하고, 이를 딕셔너리에 저장
    Coroutine slowCoroutine = StartCoroutine(BringBackSpeed(enemy));
    slowedEnemies[enemy] = slowCoroutine;
}
#endregion

#region Private Methods
private IEnumerator BringBackSpeed(Enemy enemy)
{
    yield return new WaitForSeconds(2f);

    if (enemy != null)
    {
        enemy.enemyMovement.moveSpeed *= 2f;
        slowedEnemies.Remove(enemy);
    }
}

EffectOnUnit으로 조만간 유닛에게 효과를 주는 효과의 기반 클래스로 발전 시키겠지만 지금은 이 1가지 효과를 담는 전용 클래스로 만들어뒀다.
EffectToEnemy 함수를 부르면 Dictionary에 적을 저장하고 느리게 만들고 저장 되어있으면 시간만 갱신시킨다.
이외로는 오브젝트 풀을 수정하려고 했는데, 오브젝트 풀을 다른 팀원들이 너무 여기저기서 사용해놔서 수정하려면 고쳐야할 부분이 한두곳이 아니라 나중에 하기로 했다.
한 주를 통으로 리펙토링 주로 잡을건데 아마도 다다음주 쯤 될 것 같은데 그 때 손볼 것이 좀 있어보인다.

마무리

이번에 만들다가 유니티에서 자꾸 EffectOnUnit 객체가 null로 저장이 되어서 에러가 떴는데, 알고보니 유니티가 어떤 이유에선지 매우 느리게 동작하여 컴파일이 안된채로 게임은 진행이 되어 나타난 일시적 오류였다.
진짜 아무것도 안고치고 팀원들이랑 저녁 회의를 끝내고 다시 체크해보는데 되었다.
아무튼 이제는 더블어택을 하는 유닛만 더 추가해보고 다음에는 다른 작업을 좀 맡아도 될 것 같다.