예제 #1
0
    private IEnumerator ProjectileUpdate()
    {
        yield return(new WaitForSeconds(delay));

        Collider2D[] colliders = Physics2D.OverlapPointAll(transform.position);

        foreach (Collider2D collider in colliders)
        {
            if (collider.gameObject.layer == LayerMask.NameToLayer("Characters"))
            {
                if (collider.gameObject == this.gameObject)
                {
                    continue;
                }

                NetworkCharacter nc = collider.gameObject.GetComponent <NetworkCharacter>();

                if (nc.TakeDamage(owner, damage) <= 0)
                {
                    if (owner != null && nc != null)
                    {
                        owner.OnKill(nc);
                    }
                }
            }
        }

        // Destroy.
        NetworkManager.Destroy(this.gameObject);

        yield break;
    }
예제 #2
0
    void OnCollisionEnter2D(Collision2D col)
    {
        if (isServer)
        {
            if (col.collider.gameObject.layer == LayerMask.NameToLayer("Characters"))
            {
                NetworkCharacter nc = col.collider.gameObject.GetComponent <NetworkCharacter>();

                if (nc.TakeDamage(owner, damage) <= 0)
                {
                    if (owner != null && nc != null)
                    {
                        owner.OnKill(nc);
                    }
                }
            }

            NetworkServer.Destroy(this.gameObject);
        }
    }