Exemple #1
0
    private void slashSword()  //executed on local instance
    {
        Transform player   = PCO.playerBoundingCollider.transform;
        Vector3   slashDir = player.right;

        if (!isMouseToTheRight())
        {
            slashDir = player.right * -1f;
        }

        Vector3 slashPoint = player.position;

        slashPoint += slashDir * PCO.playerBoundingCollider.bounds.extents.x;
        slashPoint += slashDir * swordLength / 2;

        hitCenterGizmoVector = slashPoint;
        Collider2D[] hits = Physics2D.OverlapCircleAll(slashPoint, swordLength);

        foreach (Collider2D c in hits)
        {
            Rigidbody2D RB = c.GetComponent <Rigidbody2D>();
            if (RB && c.gameObject != PCO.PC.gameObject)
            {
                RB.AddForce(player.right * knockBackForce);
                // Debug.Log(c.name);
            }

            EnemyRecieveDamage ERD = c.GetComponent <EnemyRecieveDamage>();
            if (ERD)  //hit enemy with ERD componenet
            //ERD.CmdTakeDamageWithGO(swordDamage,PD.gameObject);//cant because no autority
            {
                PCO.relayERDAttack(ERD, swordDamage, PD);
            }
            PlayableCharacter PC = c.GetComponent <PlayableCharacter>();
            if (PC && PC.gameObject != PCO.PC.gameObject)  //hit another player
            {
                PlayerGiveDamage PGD = PCO.GetComponent <PlayerGiveDamage>();
                if (PGD)
                {
                    PGD.giveDamageToPlayableCharacter(swordDamage, PC.PCO.gameObject);
                }
                else
                {
                    Debug.Log("can't find give damage");
                }
            }
        }

        if (slashingEffect)
        {
            GameObject GO = Instantiate(slashingEffect, slashPoint, Quaternion.identity);
            GO.transform.parent = this.transform;
        }
        else
        {
            Debug.Log("slashingEffect not assigned");
        }
    }
Exemple #2
0
 /// <summary>
 ///     Raises the <see cref="E:PlayerGiveDamage" /> event.
 /// </summary>
 /// <param name="args">The <see cref="DamageEventArgs" /> instance containing the event data.</param>
 public void OnPlayerGiveDamage(DamageEventArgs args)
 {
     PlayerGiveDamage?.Invoke(this, args);
 }