void OnTriggerEnter(Collider other) { if (Network.isClient) return; bool hit = false; if (universeN() != -1) { manager = GameObject.Find("Character" + universeN()).GetComponent<PlayerManager>(); GameObject collided = other.gameObject; string collidedTag = collided.tag; switch (collidedTag) { case "EnemyWeapon": Network.Destroy(collided); break; case "Enemy": PlayerCollisions.Boom(collided); Network.Destroy(collided); break; case "Player": // Player takes damage manager.updateHitPoints(-asteroidDamage * gameObject.transform.localScale.x); // Asteroid explosion effect happens on all clients //networkView.RPC("destroyAfterExplosion", RPCMode.Others); Network.Instantiate(explosion, transform.position, transform.rotation, 200); // Destroy the asteroid everywhere Network.Destroy(gameObject); break; case "PlayerBeam": // Do what we want for beam PlayerCollisions.WeaponBoom(gameObject, 1); Network.Destroy(collided); health = health - (WeaponHandler.beamDamage); hit = true; break; case "PlayerCannon": // Do what we want for cannon PlayerCollisions.WeaponBoom(gameObject, 2); Network.Destroy(collided); iTween.MoveBy(gameObject, new Vector3(collided.rigidbody.velocity.x / 10, collided.rigidbody.velocity.y / 10, 0), 4f); iTween.RotateAdd(gameObject, new Vector3(50, 50), 5f); hit = true; health = health - (WeaponHandler.cannonDamage); break; case "PlayerMine": // Do what we want for mine if (Network.isClient) { for (int i = 0; i < 1; i++) { Transform fragment = (Transform)Instantiate(MineFrag, gameObject.transform.position, Random.rotation); fragment.name = "MineFragment"; Physics.IgnoreCollision(fragment.collider, gameObject.collider); fragment.rigidbody.AddForce((Random.insideUnitSphere.normalized * 2) * force); } for (int i = 0; i < 1; i++) { Transform fragment = (Transform)Instantiate(MineFrag, gameObject.transform.position, Random.rotation); fragment.name = "Mine Fragment"; Physics.IgnoreCollision(fragment.collider, gameObject.collider); fragment.rigidbody.AddForce((Random.insideUnitCircle.normalized) * force); } } Network.Destroy(collided); hit = true; health = health - (WeaponHandler.mineDamage); break; case "MineFrag": health = health - (WeaponHandler.mineFragmentDamage); Network.Destroy(collided); hit = true; break; default: break; } if (health <= 0 && hit) { int scoreAddition = (int)(100 * transform.localScale.x); manager.updateScore(scoreAddition); networkView.RPC("scoreXP", RPCMode.All, universeN(), scoreAddition); Network.Instantiate(explosion, transform.position, transform.rotation, 0); Network.Destroy(gameObject); } } }