0226헤매던 부분 (queue관련)

jh Seo·2024년 2월 26일
0

헤매던 부분들

목록 보기
12/12

사이드뷰 로그라이크 액션 게임 NULL(가제) 개발중인 상태이다.

오늘 헤멨던 부분은 정말 간단했다.
boss에서 HP를 업데이트 하는 부분인데, 보스가 맞을 때마다 호출하는 함수이다.

    /// <summary>
    /// boss hp update
    /// </summary>
    public void UpdateHP()
    {
        // boss's hp cannot be negative
        if (enemyStat.HP <= 0)
        {
            enemyStat.HP = 0;
            onBossDied.Invoke();
        }
        if (phaseAmount != 1)
        {
            if(queueHP.Count!=0)
            {
                float phaseHP = queueHP.Dequeue();
                Debug.Log("cur HP : " +enemyStat.HP +" phaseHP : "+ phaseHP);
                if (enemyStat.HP < phaseHP)
                {
                    Debug.Log("nextPhase");
                    
                    enemyStat.HP = phaseHP;
                    onNextPhase.Invoke();
                }
            }
        }
        // updating HP UI
        bossHPUI.value = (float)enemyStat.HP / enemyStat.maxHP;
    }

hp phase를 queue넣고 관리하며 해당 phase에 도달하면 queue에서 dequeue해준다.
큐에는 다음 페이즈 체력이 peek에 담겨있는 상태이다.

문제는 조건문에서

if(queueHP.Count!=0){
	float phaseHP = queueHP.Dequeue();

peek이 아니라 dequeue를 써버렸더니, 체크만 해야하는데 값을 빼버려서
다음 페이즈값으로 넘어가버렸다...

이 간단한 걸 조심안하고 시간을 날렷다..

profile
코딩 창고!

0개의 댓글