Exemplo n.º 1
0
    private void OnCollisionEnter(Collision collisionInfo)
    {
        string objectID = collisionInfo.gameObject.GetComponent <IIdentity>().GetObjectID();

        if (objectID == shooterID)
        {
            return;
        }

        if (collisionInfo.gameObject.GetComponent <IDamageReciever>() == null)
        {
            SpawnImpact(collisionInfo.GetContact(0));
            DestroyObject(0);
            return;
        }

        SpawnImpact(collisionInfo.GetContact(0));

        IDamageReciever victim = collisionInfo.gameObject.GetComponent <IDamageReciever>();

        victim.OnRecievedDamage(damage, shooterID, SoundType.BoltImpact);

        string playerID = gameManager.sceneController.playerController.GetObjectID();

        if (shooterID == playerID)
        {
            gameManager.sceneController.scoreManager.OnPlayerHitChain.Invoke();
        }

        DestroyObject(0);
    }
Exemplo n.º 2
0
        void OnTriggerEnter2D(Collider2D other)
        {
            //var health = other.gameObject.GetComponent<Health>();

            //if (health != null)
            //{
            //    health.DecreaseHealth( GetDamage() );
            //}

            IDamageReciever damageReciever = other.GetComponent <IDamageReciever>();

            if (damageReciever != null)
            {
                damageReciever.TakeDamage(GetDamage());

                // TODO: Return projectile back to pool.
                // throw new System.NotImplementedException("Return projectile to pool");

                // Destroy projectile only if damage was provided
                // Destroy(gameObject);
            }

            if (_weapon.DisposeProjectile(this) == false)
            {
                Debug.LogError("Projectile couldn't be returned to pool!");
                Destroy(gameObject);
            }
        }
Exemplo n.º 3
0
    private void OnCollisionEnter(Collision collisionInfo)
    {
        if (collisionInfo.gameObject.GetComponent <IDamageReciever>() == null)
        {
            DestroyObject(0);
            return;
        }

        IDamageReciever victim = collisionInfo.gameObject.GetComponent <IDamageReciever>();

        victim.OnRecievedDamage(damage, shooterID, SoundType.BoltImpact);
    }
Exemplo n.º 4
0
    // Update is called once per frame
    void Update()
    {
        if (targetDamage == null && targetDamageTest != null)
        {
            targetDamage = targetDamageTest.GetComponent <IDamageReciever>();
            return;
        }

        if (testDamage && targetDamage != null)
        {
            targetDamage.OnRecievedDamage(20, "testID", SoundType.BoltImpact);
            testDamage = false;
        }
    }
Exemplo n.º 5
0
        private void ApplyDamage()
        {
            List <IDamageReciever> alreadyDamaged = new List <IDamageReciever>();

            Collider[] damageReceivers = Physics.OverlapSphere(transform.position,
                                                               _explosionRadius, _hitMask);
            for (int i = 0; i < damageReceivers.Length; ++i)
            {
                IDamageReciever damageReceiver =
                    damageReceivers[i].GetComponentInParent <IDamageReciever>();
                // Did we found a damage receiver? If yes, apply damage if not done already.
                if (damageReceiver != null && !alreadyDamaged.Contains(damageReceiver))
                {
                    damageReceiver.TakeDamage(_damage);
                    alreadyDamaged.Add(damageReceiver);
                    // TODO: Apply explosion force
                }
            }
        }
Exemplo n.º 6
0
        private void HealthComponent_OnDeath(object sender, System.EventArgs e)
        {
            healthComponent.IsSilent = true; //Without that we are entering a infinity loop!!
            Collider[] colliders = Physics.OverlapSphere(transform.position, range, damageMask);
            foreach (Collider col in colliders)
            {
                IDamageReciever reciever = col.GetComponent <IDamageReciever>();
                if (reciever != null)
                {
                    reciever.TakeDamage(new BasicDamageInfo(damageTyp, -Mathf.Max(damage - Vector3.Distance(col.transform.position, transform.position), 0)));
                }

                Rigidbody rig = col.GetComponent <Rigidbody>();
                if (rig != null)
                {
                    rig.AddExplosionForce(physicalForce, transform.position, range);
                }
            }
            healthComponent.IsSilent = false;
        }