Пример #1
0
    public override void HitDamage(int _Damage, GameObject attacker)
    {
        stateInfo = this.animator.GetCurrentAnimatorStateInfo(0);


        if (IsAlive)
        {
            currentLife -= _Damage;
            shoutCount  += 1;

//uiManager.bossHp.fillAmount = maxLife / currentLife;
            if (currentLife > 0)
            {
                for (int i = 0; i < player.Length; i++)
                {
                    if (player [i] == attacker)
                    {
                        playerToMonsterDamage [i] += _Damage;
                        targetPlayer = player [i];
                    }
                }
                if (targetPlayer != null)
                {
                    currentDisTance = Vector3.Distance(targetPlayer.transform.position, transform.position);
                }
                if (currentDisTance <= RunRange && currentDisTance > attackRange)          //원거리 케릭터가 공격시 원거리 공격
                {
                    PatternReserveListCleanUp((int)BigBearBossPatternName.BigBearBossOneHandAttack);
                }
                if (shoutCount >= 100)          //100회 이상 데미지를 받을 경우
                {
                    PatternReserveListCleanUp((int)BigBearBossPatternName.BigBearBossRoar);
                }
                //hitanimation
            }

            else if (currentLife <= 0)
            {
                currentLife = 0;
                if (!stateInfo.IsName("BigBearBossDeath"))
                {
                    BigBearBossState = BigBearBossPatternName.BigBearBossDeath;
                    BigBearBossPattern((int)BigBearBossState);
                    IsAlive           = false;
                    HittedBox.enabled = false;
                    return;
                }
            }
        }
    }
Пример #2
0
    public void BigBearBossPattern(int bossState)
    {
        monsterAttack = false;
        switch (bossState)
        {
        case 0:
            BigBearBossState = BigBearBossPatternName.BigBearBossIdle;
            animator.SetInteger("state", 0);
            break;

        case 1:
            BigBearBossState = BigBearBossPatternName.BigBearBossRun;
            animator.SetInteger("state", 1);
            break;

        case 2:
            BigBearBossState = BigBearBossPatternName.BigBearBossAttack;
            animator.SetInteger("state", 2);
            monsterAttack = true;
            break;

        case 3:
            BigBearBossState = BigBearBossPatternName.BigBearBossOneHandAttack;
            animator.SetInteger("state", 3);
            monsterAttack = true;
            break;

        case 4:
            BigBearBossState = BigBearBossPatternName.BigBearJumpAttack;
            animator.SetInteger("state", 4);
            break;

        case 5:
            BigBearBossState = BigBearBossPatternName.BigBearBossRoar;
            animator.SetInteger("state", 5);
            break;

        case 6:
            BigBearBossState = BigBearBossPatternName.BigBearBossDeath;
            animator.SetTrigger("BigBearBossDeath");
            break;
        }
    }
Пример #3
0
    public IEnumerator BossMonsterPatternChange()
    {
        while (IsAlive)
        {
            if (attackCycle >= 1)
            {
                attackCycle = 0;
            }
//			if (stateInfo.IsName ("BigBossBearJumpAttack") || stateInfo.IsName ("BigBearBossRoar") || stateInfo.IsName ("BigBearBossWarning")) {
//				break;
//
//			}


            else if (targetPlayer != null)
            {
                if (currentDisTance < attackRange)
                {
                    if (patternReserveList [0] != 0)
                    {
                        BigBearBossPattern(patternReserveList [0]);
                    }
                    else if (stateInfo.IsName("BigBearBossIdle"))
                    {
                        BigBearBossPattern(patternReserveList [1]);
                    }
//						BigBearBossPattern ((int)BigBearBossPatternName.BigBearBossRoar);
//						//애니메이션 이벤트로 효과를 넣었음
//
//						BigBearBossPattern ((int)BigBearBossPatternName.BigBearJumpAttack);
//						//애니메이션 이벤트로 효과를 넣었음
                }
                else if (currentDisTance > RunRange)
                {
                    BigBearBossState = BigBearBossPatternName.BigBearBossIdle;
                    BigBearBossPattern((int)BigBearBossState);
                    changeDirection();
                }
                else if (currentDisTance <= RunRange && currentDisTance > attackRange)
                {
                    BigBearBossState = BigBearBossPatternName.BigBearBossRun;
                    BigBearBossPattern((int)BigBearBossState);
                    changeDirection();
//				if (stateInfo.IsName ("BigBearBossRun")) {
//
//					//transform.LookAt(player[0].transform.position);
//					transform.Translate ((player [0].transform.position - transform.position) * moveSpeed * Time.deltaTime, 0);//반대로 걸어 가서 수정
//					//transform.position = Vector3.Lerp (transform.position, player [0].transform.position, Time.deltaTime * moveSpeed);
//				}
                }

                if (IsAttack)
                {
                    for (int i = 0; i < BossMonsterWeapon.Length; i++)
                    {
                        BossMonsterWeapon [i].AttackColliderSizeChange(new Vector3(3.6f, 1f, 1.1f));
                    }
                }
                else if (!IsAttack)
                {
                    for (int i = 0; i < BossMonsterWeapon.Length; i++)
                    {
                        BossMonsterWeapon [i].AttackColliderSizeChange(new Vector3(0, 0, 0));
                    }
                }
            }
            else
            {
                BigBearBossState = BigBearBossPatternName.BigBearBossIdle;
            }
            BigBearBossPattern((int)BigBearBossState);
            yield return(new WaitForSeconds(0.2f));
        }
    }