/// <summary> /// /// </summary> void Counter() { TimeToExploit--; if (TimeToExploit <= 0) { GameObject e = Instantiate(explosion, transform.position, Quaternion.identity) as GameObject; if (m_Type == ProjectileType.Grenade) { bl_Blast blast = e.GetComponent <bl_Blast>(); if (blast != null) { blast.isNetwork = isNetwork; blast.WeaponID = ID; blast.explosionDamage = damage; blast.AIViewID = bl_GameManager.m_view; Team t = (AIFrom) ? AITeam : PhotonNetwork.LocalPlayer.GetPlayerTeam(); if (AIFrom) { blast.AISetUp(AIViewID, t, BotName); } } } else if (m_Type == ProjectileType.Molotov) { } CancelInvoke("Counter"); Destroy(gameObject); } }
/// <summary> /// /// </summary> void Counter() { TimeToExploit--; if (TimeToExploit <= 0) { GameObject e = Object.Instantiate(explosion, transform.position, Quaternion.identity) as GameObject; bl_Blast blast = e.GetComponent <bl_Blast>(); if (blast != null) { blast.isNetwork = isNetwork; blast.WeaponID = ID; blast.WeaponName = mName; blast.explosionDamage = damage; } CancelInvoke("Counter"); Destroy(gameObject); } }
/// <summary> /// /// </summary> void OnCollisionEnter(Collision enterObject) { if (!OnHit) { return; } switch (enterObject.transform.tag) { case "Projectile": //return; break; default: Destroy(gameObject, 0); //GetComponent<Rigidbody>().useGravity = false; ContactPoint contact = enterObject.contacts[0]; Quaternion rotation = Quaternion.FromToRotation(Vector3.forward, contact.normal); GameObject e = Instantiate(explosion, contact.point, rotation) as GameObject; if (m_Type == ProjectileType.Grenade) { bl_Blast blast = e.GetComponent <bl_Blast>(); if (blast != null) { blast.isNetwork = isNetwork; blast.WeaponID = ID; blast.explosionDamage = damage; } } else if (m_Type == ProjectileType.Molotov) { bl_DamageArea da = e.GetComponent <bl_DamageArea>(); da.SetInfo(AIFrom ? BotName : PhotonNetwork.NickName, isNetwork); } if (enterObject.rigidbody) { enterObject.rigidbody.AddForce(transform.forward * impactForce, ForceMode.Impulse); } break; } }
/// <summary> /// /// </summary> /// <param name="enterObject"></param> void OnCollisionEnter(Collision enterObject) { // things to add: // maybe a distance or time check to see if grenade is far enough away to arm before exploding // ... maybe a non armed grenade will bounce then explode // similar to direct noob tube shots in CoD if (!OnHit) { return; } switch (enterObject.transform.tag) { case "Projectile": //return; break; default: Destroy(gameObject, 0); //GetComponent<Rigidbody>().useGravity = false; ContactPoint contact = enterObject.contacts[0]; Quaternion rotation = gameObject.GetComponent <Rigidbody>().rotation; //Quaternion.FromToRotation(Vector3.up, contact.normal); GameObject e = Object.Instantiate(explosion, contact.point, rotation) as GameObject; bl_Blast blast = e.GetComponent <bl_Blast>(); if (blast != null) { blast.isNetwork = isNetwork; blast.WeaponID = ID; blast.WeaponName = mName; blast.explosionDamage = damage; } if (enterObject.rigidbody) { enterObject.rigidbody.AddForce(transform.forward * impactForce, ForceMode.Impulse); } break; } }