// 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(); } } } }
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(); } } }
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(); } }