예제 #1
0
    void OnTriggerEnter()
    {
        GameObject collided_obj = GetComponent <CompCollider>().GetCollidedObject();
        // DAMAGE ---
        Enemy_BT obj = collided_obj.GetComponent <Enemy_BT>();

        if (obj != null)
        {
            obj.ApplyDamage(damage);
        }
        else
        {
            CompCollider obj_col = collided_obj.GetComponent <CompCollider>();
            if (obj_col != null)
            {
                obj_col.CallOnContact();
            }
        }

        // DESTROY ---
        if (collision)
        {
            Destroy(gameObject);
        }
    }
예제 #2
0
    void OnContact()
    {
        CompCollider col          = GetComponent <CompCollider>();
        GameObject   collided_obj = col.GetCollidedObject();

        Vector3 point  = col.GetContactPoint();
        Vector3 normal = col.GetContactNormal();

        // DAMAGE ---
        if (collided_obj != null && destroyed == false)
        {
            /* PLAY AUDIO */
            GetComponent <CompAudio>().PlayEvent("TheonImpact");
            //Lock transform to avoid trespassing more than one collider
            rb.LockTransform();

            // Check the specific enemy in front of you and apply dmg or call object OnContact
            EnemiesManager enemy_manager = GetLinkedObject("player_enemies_manager").GetComponent <EnemiesManager>();
            if (enemy_manager.IsEnemy(collided_obj))
            {
                enemy_manager.ApplyDamage(collided_obj, damage, Enemy_BT.ENEMY_GET_DAMAGE_TYPE.ARROW);
                if (arrow_blood_particles != null)
                {
                    arrow_blood_particles.GetComponent <Transform>().SetUpVector(normal);
                    arrow_blood_particles.GetComponent <Transform>().SetPosition(point + normal * 2);

                    CompParticleSystem arrow_particles_script = arrow_blood_particles.GetComponent <CompParticleSystem>();
                    arrow_particles_script.ActivateEmission(true);
                }
            }
            else
            {
                CompCollider obj_col = collided_obj.GetComponent <CompCollider>();
                if (obj_col != null)
                {
                    obj_col.CallOnContact();
                }
                if (arrow_sparks_particles != null)
                {
                    arrow_sparks_particles.GetComponent <Transform>().SetUpVector(normal);
                    arrow_sparks_particles.GetComponent <Transform>().SetPosition(point + normal * 2);

                    CompParticleSystem wall_particles_script = arrow_sparks_particles.GetComponent <CompParticleSystem>();
                    wall_particles_script.ActivateEmission(true);
                }
            }
        }
        if (destroyed == false)
        {
            Destroy(gameObject);
            destroyed = true;
        }
    }
예제 #3
0
    void OnContact()
    {
        GameObject collided_obj = GetComponent <CompCollider>().GetCollidedObject();
        // DAMAGE ---

        CompCollider obj_col = collided_obj.GetComponent <CompCollider>();

        if (obj_col != null)
        {
            obj_col.CallOnContact();
        }

        rb.LockTransform();
        Destroy(gameObject);
    }