Esempio n. 1
0
    void Update()
    {
        //타이머가 초기화 되지 않았고, 공격 버튼을 누르지 않은 상태
        if (attackTimer > 0)
        {
            attackTimer -= Time.deltaTime;
        }

        //공격 버튼이 눌려있는 상태
        if (isAttackInput)
        {
            if (attackTimer <= 0)
            {
                //공격 속도가 0인 경우(공격 불가 상태) 실행 안함 / Divid zero 예외처리 겸용
                if (playerStatus.attackSpeed == 0)
                {
                    return;
                }

                //공격 모션 적용
                attackTimer = 1 / playerStatus.attackSpeed;
                playerAnimation.SetAttackMotionSpeed(playerStatus.attackSpeed);
                playerAnimation.StartAttack();
                attackDirection = playerAnimation.GetPlayerSpriteDirection();

                //기본공격 프리팹을 인스턴스화
                //공격 방향에 따라 범위 회전 및 위치 변경
                //상하좌우 순서로 transform자식이 각각의 위치에 배치되어있음
                GameObject newAttack;
                if (attackDirection == Vector2.up)
                {
                    newAttack = Instantiate(basicAttackPrefab, transform.GetChild(0));
                    newAttack.transform.Rotate(0, 0, 180);
                }
                else if (attackDirection == Vector2.down)
                {
                    newAttack = Instantiate(basicAttackPrefab, transform.GetChild(1));
                    newAttack.transform.Rotate(0, 0, 0);
                }
                else if (attackDirection == Vector2.left)
                {
                    newAttack = Instantiate(basicAttackPrefab, transform.GetChild(2));
                    newAttack.transform.Rotate(0, 0, -90);
                }
                else
                {
                    newAttack = Instantiate(basicAttackPrefab, transform.GetChild(3));
                    newAttack.transform.Rotate(0, 0, 90);
                }

                //기본공격 정보 설정
                basicAttack             = newAttack.GetComponent <BasicAttack>();
                basicAttack.skillCaster = transform.parent.gameObject;
                basicAttack.SetSkillIndex(-1);
                basicAttack.skillDirection  = attackDirection;
                basicAttack.knockBackPower += playerStatus.knockBackPower;
                basicAttack.isKnockBack     = true;
                basicAttack.damage         += playerStatus.attackDamage;
                basicAttack.ActivateSkill();
            }
        }
        else
        {
            playerAnimation.StopAttack();
        }
    }