コード例 #1
0
ファイル: Monster.cs プロジェクト: OFTNgames/SmallGame
    private void OnCollisionEnter2D(Collision2D collision)
    {
        ICanTakeDamage _canTakeDamage = collision.collider.gameObject.GetComponent <ICanTakeDamage>();

        if (_canTakeDamage != null)
        {
            _canTakeDamage.TakeDamage();
        }
    }
コード例 #2
0
    /// <summary>
    /// called by melleeWeapon
    /// </summary>
    /// <param name="Target"></param>
    public void DealDamage(ICanTakeDamage Target)
    {
        if (isServer || test)
        {
            Debug.Log("yo2");


            Target.TakeDamage(mainAttackDamage, this);
        }
    }
コード例 #3
0
    public void Attack()
    {
        Collider2D[] damage = Physics2D.OverlapCircleAll(attPos.position, attackRange, enemiesLayer);

        for (int i = 0; i < damage.Length; i++)
        {
            ICanTakeDamage objToTakeDamage = damage[i].GetComponent <ICanTakeDamage>();
            if (objToTakeDamage != null)
            {
                objToTakeDamage.TakeDamage();
            }
        }
    }
コード例 #4
0
    private void OnTriggerEnter(Collider other)
    {
        if (isInAttackFrame)
        {
            ICanTakeDamage c = other.GetComponent <ICanTakeDamage>();
            if (c != null && c != DamageDealer)
            {
                Debug.Log("yo1");
                DamageDealer.DealDamage(c);

                // DamageDealer.damageCharacter(c);
                isInAttackFrame = false;
            }
        }
    }
コード例 #5
0
    protected virtual void FixedUpdate()
    {
        colNr = Col.Cast(Vector2.zero, filter, collisions);

        if (colNr > 0)
        {
            for (int i = 0; i < colNr; i++)
            {
                ICanTakeDamage hitObject = collisions[i].transform.GetComponentInParent <ICanTakeDamage>();
                if (hitObject != null)
                {
                    hitObject.GetHit(damage);
                }
            }
        }
        else
        {
            damage.GenerateID();
        }
    }
コード例 #6
0
ファイル: WeaponAttack.cs プロジェクト: Pbasnal/PrisonEscape
        public AttackStage Attack(ICanTakeDamage canTakeDamage, float baseDamageAmount)
        {
            attackTimer += Time.deltaTime;
            if (!attacked && attackTimer < anticipationTimeInMs)
            {
                Debug.Log(string.Format("Anticipating: {0}", 0));
                return(AttackStage.Anticipation);
            }
            else if (!attacked && attackTimer > anticipationTimeInMs)
            {
                canTakeDamage.TakeDamage(baseDamageAmount * damageMultiplier);
                attacked = true;
                return(AttackStage.Contact);
            }
            else if (attacked && attackTimer < recoveryTimeInMs + anticipationTimeInMs)
            {
                Debug.Log(string.Format("Recovering: {0}", 0));
                return(AttackStage.Recovery);
            }

            return(AttackStage.Complete);
        }
コード例 #7
0
 public void Attack(ICanTakeDamage canTakeDamage)
 {
     canTakeDamage.TakeDamage(damageToDeal);
 }
コード例 #8
0
ファイル: Projectile.cs プロジェクト: Verruckt3r/Sidescroller
 protected virtual void OnCollideTakeDamage(Collider2D other, ICanTakeDamage takedamage)
 {
 }
コード例 #9
0
    public void DrawHitboxes(Frame currentFrame)
    {
        float dirX = 1;

        if (spr.flipX == true)
        {
            dirX = -1;
        }

        Collider2D[] hit      = new Collider2D[5];
        Vector2      position = transform.position;

        if (previousFrame != currentFrame && currentFrame.newHitID)
        {
            GenerateID();
        }

        for (int i = 0; i < currentFrame.hitboxes.Count; i++)
        {
            currentFrame.hitboxes[i].ID = currentID;

            Vector2 hitBoxPosition = position + new Vector2(currentFrame.hitboxes[i].position.x * dirX,
                                                            currentFrame.hitboxes[i].position.y);

            int number = Physics2D.OverlapCircleNonAlloc(hitBoxPosition, currentFrame.hitboxes[i].radius, hit, hitLayer);

            if (number > 0)
            {
                for (int j = 0; j < number; j++)
                {
                    ICanTakeDamage hitObject = (ICanTakeDamage)hit[j].GetComponentInParent(typeof(ICanTakeDamage));

                    Damage damage = currentFrame.hitboxes[i].GetDamage(spr.flipX).Clone();
                    //damage.attackType = Chr.currentAttackType;

                    damage.hitID    = currentID;
                    damage.Owner    = Chr;
                    damage.position = hitBoxPosition;

                    if (Chr.CurrentAttackBuff != null) //@@@ is null if a projectile hits. Must be changed, since projectile get a buff if an attack is performed while the projectile hits
                    {
                        damage.damageNumber += Chr.CurrentAttackBuff.damageAdd;
                        damage.damageNumber *= Chr.CurrentAttackBuff.damageMulti;
                    }

                    //damage.damageNumber *= Chr.GetCardEffect_DamageMultiplier(damage.attackType);

                    /*
                     * for (int k = 0; k < Chr.cardEffects.Count; k++)
                     * {
                     *  Chr.cardEffects[k].ModifyDamage(damage);
                     * }
                     */


                    if (Chr is Player)
                    {
                        Player player = (Player)Chr;

                        damage.AddDamage(player.soulCharge);
                    }

                    if (hitObject != null)
                    {
                        for (int l = 0; l < Chr.Buffs.Count; l++)
                        {
                            if (Chr.Buffs[l].GetType() == typeof(BuffAddDamageToAttack))
                            {
                                BuffAddDamageToAttack buff = (BuffAddDamageToAttack)Chr.Buffs[l];

                                if (damage.attackType == buff.attackType)
                                {
                                    damage.damageNumber *= (1 + buff.damagePercent);
                                }
                            }
                        }

                        if (hitObject is Character)
                        {
                            Character hitChr = (Character)hitObject;

                            damage.HitPosition = (Chr.transform.position + hitChr.transform.position) / 2f;

                            //hitChr.GetHit(damage);
                            if (ACharacterHit != null)
                            {
                                ACharacterHit(hitChr, damage);
                            }
                        }
                        else if (hitObject is Item)
                        {
                            Item hitItem = (Item)hitObject;

                            hitItem.Owner = Chr;

                            //hitItem.GetHit(damage);
                        }

                        hitObject.GetHit(damage);
                    }
                }
            }
        }

        previousFrame = currentFrame;
    }
コード例 #10
0
 public void Attack(ICanTakeDamage canTakeDamage)
 {
     //attacks[0].Attack(canTakeDamage, DamageAmount);
 }
コード例 #11
0
 protected override void OnCollideTakeDamage(Collider2D other, ICanTakeDamage takedamage)
 {
     takedamage.TakeDamage(Damage, Vector2.zero, gameObject);
     SoundManager.PlaySfx(soundHitEnemy, soundHitEnemyVolume);
     DestroyProjectile();
 }
コード例 #12
0
 public override void Attack(ICanTakeDamage target)
 {
 }
コード例 #13
0
ファイル: Weapon.cs プロジェクト: Pbasnal/PrisonEscape
 public abstract void Attack(ICanTakeDamage target);