Example #1
0
 // 受伤
 public override void getHurt(DamageDegree damageDegree, float damage, DamageType damageType)
 {
     base.getHurt(damageDegree, damage, damageType);
     Locked = true;
     Invoke("cure", 0.5f);
     MyAI.setState(AIState.HURT);
 }
Example #2
0
    // 受到攻击
    public virtual void getHurt(DamageDegree damageDegree, float damage, DamageType damageType)
    {
        if (!Eternal)
        {
            foreach (Equipment equipment in EquipmentList)
            {
                equipment.onHurt(ref damage);
            }
            // 伤害计算公式
            CurrentShieldValue -= damage;
            if (CurrentShieldValue <= 0)
            {
                CurrentShieldValue = 0;
                float temp = 0f;
                switch (damageType)
                {
                case DamageType.PHYSIC:
                    temp           = damage - PhysicDefence - CurrentShieldValue;
                    CurrentHealth -= temp >= 0 ? temp : 0;
                    break;

                case DamageType.MAGIC:
                    temp           = damage - MagicDefence - CurrentShieldValue;
                    CurrentHealth -= temp >= 0 ? temp : 0;
                    break;
                }
            }
        }
    }
Example #3
0
    /// <summary>
    /// 受到攻击
    /// </summary>
    /// <param name="damageDegree">伤害类型</param>
    /// <param name="damage">伤害数值</param>
    public override void getHurt(DamageDegree damageDegree, float damage, DamageType damageType)
    {
        base.getHurt(damageDegree, damage, damageType);
        CurrentState = StateEnum.HURT;
        Anim.SetBool("hurt", true);
        switch (damageDegree)
        {
        case DamageDegree.LIGHT_ATTACK:
            Anim.SetBool("lightHurt", true);
            Invoke("finishLightHurt", 0.5f);
            break;

        case DamageDegree.HEAVY_ATTACK:
            Anim.SetBool("heavyHurt", true);
            Invoke("finishHeavyHurt", 0.5f);
            break;

        case DamageDegree.STRIKE_FLY:
            Anim.SetBool("strikeFly", true);
            Invoke("finishStrikeFly", 0.5f);
            break;

        default:
            break;
        }
    }
Example #4
0
    /// <summary>
    /// 受到攻击
    /// </summary>
    /// <param name="damageType">伤害类型</param>
    /// <param name="damage">伤害数值</param>
    public override void getHurt(DamageDegree damageDegree, float damage, DamageType damageType)
    {
        base.getHurt(damageDegree, damage, damageType);
        if (Eternal)
        {
            return;
        }
        MoveAnim.SetBool("hurt", true);
        CurrentState = StateEnum.HURT;
        switch (damageDegree)
        {
        case DamageDegree.LIGHT_ATTACK:
            MoveAnim.SetBool("hurt", false);
            //MoveAnim.SetBool("lightHurt", true);
            IsLightHurt      = true;
            CurrentFlashimes = 0;
            //Invoke("finishLightHurt", 0.5f);
            break;

        case DamageDegree.HEAVY_ATTACK:
            MoveAnim.SetBool("heavyHurt", true);
            Locked = true;
            //Invoke("finishHeavyHurt", 0.5f);
            break;

        case DamageDegree.STRIKE_FLY:
            MoveAnim.SetBool("strikeFly", true);
            Locked = true;
            //Invoke("finishStrikeFly", 0.5f);
            break;

        default:
            break;
        }
    }
Example #5
0
 // 单次攻击
 public virtual bool hit(GameCharacter character, DamageDegree damageType, float damage, DamageType type)
 {
     if (checkHit(character))
     {
         character.getHurt(damageType, damage, type);
         character.checkAlive();
         return(true);
     }
     else
     {
         return(false);
     }
 }
Example #6
0
 /// <summary>
 /// 执行攻击行为
 /// </summary>
 /// <param name="skill">攻击模式</param>
 /// <param name="damageDegree">伤害类型</param>
 /// <param name="damage">伤害数值</param>
 private void dealDamage(AttackEnum skill, DamageDegree damageDegree, float damage, DamageType damageType)
 {
     // 攻击NPC
     for (int i = 0; i < GameCharacterManager.Instance.NPCList.Count; i++)
     {
         if (checkHit(GameCharacterManager.Instance.NPCList[i]))
         {
             hit(GameCharacterManager.Instance.NPCList[i], damageDegree, damage, damageType);
             setAttackEffect(skill, GameCharacterManager.Instance.NPCList[i]);
             //GameCharacterManager.Instance.NPCList[i].MyAI.setTarget(this);
             GameCharacterManager.Instance.NPCList[i].Target = this;
         }
     }
     // 攻击敌人
     for (int i = 0; i < GameCharacterManager.Instance.EnemyList.Count; i++)
     {
         if (checkHit(GameCharacterManager.Instance.EnemyList[i]))
         {
             hit(GameCharacterManager.Instance.EnemyList[i], damageDegree, damage, damageType);
             setAttackEffect(skill, GameCharacterManager.Instance.EnemyList[i]);
         }
     }
 }
Example #7
0
 /// <summary>
 /// 限定类型、伤害数值
 /// </summary>
 /// <param name="target">目标</param>
 /// <param name="damageType">伤害类型</param>
 /// <param name="damage">伤害数值</param>
 public virtual void attack(GameCharacter target, DamageDegree damageType, float damage)
 {
 }
Example #8
0
 // 限定类型、伤害数值
 public override void attack(GameCharacter target, DamageDegree damageType, float damage)
 {
     hit(target, damageType, damage, MyDamageType);
 }
Example #9
0
    // 攻击
    public override bool hit(GameCharacter character, DamageDegree damageDegree, float damage, DamageType type)
    {
        return(base.hit(character, damageDegree, damage, type));

        character.Locked = true;
    }