Example #1
0
        public void Damage(Vector3 pos, AttackData attackData)
        {
            if (isDead == true)
                return;
            DamageMessage msg = attackData.AttackProcessor.ProcessAttack(attackData.AttackDataStat, characterStatController);
            msg.SetDamagePosition(pos);

            if (OnHit != null) OnHit.Invoke(msg);

            shakeSprite.Shake(0.05f, 0.2f);
            if (characterStatController.Hp <= 0)
            {
                //Death(attackData);
                Destroy(this.gameObject);
                return;
            }
            float hpMax = characterStatController.GetHPMax();
            for (int i = 0; i < healthPercentage.Length; i++)
            {
                if ((characterStatController.Hp / hpMax) >= healthPercentage[i])
                {
                    objectAtHealth[i].gameObject.SetActive(true);
                    return;
                }
                else
                {
                    objectAtHealth[i].gameObject.SetActive(false);
                }
            }
        }
Example #2
0
        public void Damage(Vector3 pos, AttackData attackData)
        {
            if (isDead == true)
                return;
            DamageMessage msg = attackData.AttackProcessor.ProcessAttack(attackData.AttackDataStat, characterStatController);
            msg.SetDamagePosition(pos);

            if (OnHit != null) OnHit.Invoke(msg);

            //shakeSprite.Shake(0.05f, 0.2f);
            if (characterStatController.Hp <= 0 || characterStatController.Scratch == characterStatController.Hp)
            {
                characterStatController.Hp = 0;
                Death();
                //Destroy(this.gameObject);
                return;
            }
        }
        public void Damage(Vector3 pos, AttackData attackData)
        {
            if (isDead == true || isInvulnerable == true)
                return;

            /*if (characterAnimation.State == CharacterState.Dash)
            {
                OnInterrupt.Invoke();
            }*/

            DamageMessage msg = characterBodyPartController.Damage(attackData, characterMovement.CharacterDirection.DirectionTransform);
            //DamageMessage msg = attackData.AttackProcessor.ProcessAttack(attackData.AttackDataStat, characterStatController);
            msg.SetDamagePosition(pos);

            if (OnHit != null) OnHit.Invoke(msg);

            if(characterStatController.Hp <= 0)
            {
                Death(attackData);
                return;
            }
            if(msg.damageRaw + msg.damageScratch > 0)
                shakeSprite.Shake(0.05f, 0.2f);

            if(isInterruptable == true)
            {
                if (airborneClip != null)
                    AudioManager.Instance.PlaySound(airborneClip);
                Knockback();
                if(OnInterrupt != null) OnInterrupt.Invoke();
                isInterruptable = false;
            }

            if (isKnockback == false && msg.knockback == true)
                Knockback();
            else if (isKnockback == true)
                Knockback();

            if (isKnockback == true && msg.launch == true)
                CheckLaunch(attackData);
        }