Unity3D_MMO - 체력 (2)

k_hyun·2022년 10월 20일
0

Unity_MMO_Project

목록 보기
28/33

Knight


테스트를 위해 Knight에게 임의로 UI_HPBar를 달아주었다.

UI_HPBar.cs

private void Update()
    {
        Transform parent = transform.parent;
        transform.position = parent.position + Vector3.up * (parent.GetComponent<Collider>().bounds.size.y + 0.4f);
        // 여러 각도에서 일정하게 보이도록 회전을 같이 수정해준다.
        transform.rotation = Camera.main.transform.rotation;

        //매 업데이트마다 hp ui를 set해준다.
        float ratio = _stat.Hp / (float)_stat.MaxHp;
        SetHp(ratio);
    }

    // 오브젝트를 들고와서 슬라이더의 값을 ration로 수정
    public void SetHp(float ratio)
    {
        GetObject((int)GameObjects.HP_Bar).GetComponent<Slider>().value = ratio;
    }

HP의 비율을 설정하기 위해 매 업데이트마다 SetHp 함수를 실행하도록 하였다.

PlayerController.cs

void OnHitEvent()
    {
        if (_lockTarget != null)
        {
            Stat targetStat = _lockTarget.GetComponent<Stat>();
            PlayerStat mystat = transform.GetComponent<PlayerStat>();
            int damage = Mathf.Max(0, mystat.Attack - targetStat.Defense);
            Debug.Log(damage);
            targetStat.Hp -= damage;
        }

        if (_stopSkill)
            State = PlayerState.Idle;
        else
            State = PlayerState.SKill;
    }

OnHitEvent에서 스탯의 hp를 수정하기 위한 코드를 작성하였다.

실행 결과


hp가 잘 감소함을 확인하였다.

0개의 댓글