Exemple #1
0
 // This function deal damage and instantiate a random PS
 private void GranadeBulletExplosion()
 {
     // Instantiate PS
     Instantiate(m_ExplosionParticle, transform.position, transform.rotation);
     // Get all gameObjects that have to collide with granade
     Collider[] l_Objects = Physics.OverlapSphere(m_BulletTrasnform.position, m_CurrentExplosionRadius, m_ExplosionLayerMask);
     // If some object have collisioned deal damage to it
     if (l_Objects != null)
     {
         foreach (Collider go in l_Objects)
         {
             // IF tag is enemy
             if (go.tag == "Enemy")
             {
                 // Deaal damage to enemy
                 go.GetComponent <IEnemy>().DealDamage(m_Damage);
             }
             if (go.tag == "DestroyableObject")
             {
                 // Deal damage to destroyable object
                 go.GetComponent <IDamageable>().DealDamage(m_Damage);
             }
             if (go.tag == "BoxAmmo")
             {
                 // Desactive box ammo
                 BoxAmmo l_Box = go.GetComponent <BoxAmmo>();
                 l_Box.DropObject();
             }
         }
     }
 }
Exemple #2
0
    private void FireNerf()
    {
        // Instance PS
        if (m_NerfBulletParticleSystem)
        {
            m_NerfBulletParticleSystem.Play();
        }
        SoundController.Instance.PlayOneShootAudio("event:/Nerf/Shot", m_PlayerBlackboard.m_PlayerTransform);
        // Set elapsed time to 0
        m_ElapsedTimeFire = 0;
        //Substract Ammo
        m_PlayerBlackboard.SubstractAmmo(1);
        // Get damage depending if player have buff activated
        int l_Damage = m_PlayerBlackboard.BuffActive() ?
                       l_Damage = m_PlayerBlackboard.m_NerfSO.m_WeaponLevel[m_PlayerBlackboard.m_NerfCurrentLevel].m_Damage * m_PlayerBlackboard.m_DamageMultiplayer   :
                                  m_PlayerBlackboard.m_NerfSO.m_WeaponLevel[m_PlayerBlackboard.m_NerfCurrentLevel].m_Damage;
        Ray        l_CameraRay = Camera.main.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0.0f));
        RaycastHit l_RaycastHit;

        if (Physics.Raycast(l_CameraRay, out l_RaycastHit, m_BulletMaxDistance, m_ShootLayerMask.value))
        {
            GameController.Instance.GetNerfProjectileCollisionParticle().Initialize(l_RaycastHit.point, l_RaycastHit.normal);
            if (l_RaycastHit.collider.GetComponent <MeleeEnemy>() != null)
            {
                l_RaycastHit.collider.GetComponent <MeleeEnemy>().DealDamage(l_Damage);
            }
            else if (l_RaycastHit.collider.GetComponent <DistanceEnemy>() != null)
            {
                l_RaycastHit.collider.GetComponent <DistanceEnemy>().DealDamage(l_Damage);
            }
            else if (l_RaycastHit.collider.GetComponent <DestroyableObject>() != null)
            {
                l_RaycastHit.collider.GetComponent <DestroyableObject>().DealDamage(l_Damage);
            }
            else if (l_RaycastHit.collider.tag == "BoxAmmo")
            {
                BoxAmmo l_Box = l_RaycastHit.collider.GetComponent <BoxAmmo>();
                l_Box.DropObject();
            }
            else
            {
                GameController.Instance.GetDecalNerfInactive().Initialize(l_RaycastHit.point, l_RaycastHit.normal);
            }
        }
    }
 // Called when trigger enters to GO
 public void OnDealDamage(GameObject collider, string tag)
 {
     if (m_Active)
     {
         // If collision tag is player
         if (tag == "Player" && m_Owner == TOwner.Enemy)
         {
             // Deal damage to player and destroy bullet
             GameController.Instance.m_PlayerBlackboard.DealDamage(m_Damage);
             OnBulletDestroy();
         }
         // Deal damagge to protectable object if is enemy
         else if (tag == "ProtectableObject" && m_Owner == TOwner.Enemy)
         {
             IDamageable l_Object = collider.GetComponent <IDamageable>();
             l_Object.DealDamage(m_Damage);
             OnBulletDestroy();
         }
         // Else if tag is enemy
         else if (tag == "Enemy" && m_Owner == TOwner.Player)
         {
             IEnemy l_EnemyDamaged = collider.GetComponent <IEnemy>();
             l_EnemyDamaged.DealDamage(m_Damage);
             OnBulletDestroy();
         }
         else if (tag == "BoxAmmo" && m_Owner == TOwner.Player)
         {
             BoxAmmo l_Box = collider.GetComponent <BoxAmmo>();
             l_Box.DropObject();
             OnBulletDestroy();
         }
         // Deal damage to destroyable object
         else if (tag == "DestroyableObject" && m_Owner == TOwner.Player)
         {
             IDamageable l_Object = collider.GetComponent <IDamageable>();
             l_Object.DealDamage(m_Damage);
             OnBulletDestroy();
         }
         else
         {
             OnBulletDestroy();
         }
     }
 }
Exemple #4
0
 void OnTriggerEnter(Collider other)
 {
     // Deal damage to enemy
     if (other.tag == "Enemy" && m_PlayerBlackboard.m_CurrentWeapon == (int)TWeaponTypes.Punch)
     {
         other.GetComponent <IEnemy>().DealDamage(m_PlayerBlackboard.m_PunchSO.m_WeaponLevel[m_PlayerBlackboard.m_PunchCurrentLevel].m_Damage);
     }
     // Deal damage to destroyable object
     if (other.tag == "DestroyableObject" && m_PlayerBlackboard.m_CurrentWeapon == (int)TWeaponTypes.Punch)
     {
         other.GetComponent <IDamageable>().DealDamage(m_PlayerBlackboard.m_PunchSO.m_WeaponLevel[m_PlayerBlackboard.m_PunchCurrentLevel].m_Damage);
     }
     // Desactive box ammo
     if (other.tag == "BoxAmmo")
     {
         BoxAmmo l_Box = other.GetComponent <BoxAmmo>();
         l_Box.DropObject();
     }
 }