void HandleRocketCollision(RocketBehaviour rocket, Vector3 hitPosition) { if (!rocket.state.launched) { return; } if (rocket.configuration.sourcePlanet == this && !rocket.state.leftPlanet) { return; } GetComponent <AudioSource> ().Play(); HitInfo hitInfo = ReceiveDamage(rocket.damage, hitPosition, rocket.configuration.sourcePlanet.configuration.mainColor); var rocketBody = rocket.GetComponent <Rigidbody> (); var rigidBody = GetComponent <Rigidbody> (); rigidBody.velocity += rocketBody.velocity * rocketBody.mass / rigidBody.mass; var eventManager = GameObject.Find("EventManager").GetComponent <EventManager>(); eventManager.planetHitEvent.Invoke(this, rocket, hitInfo); Destroy(rocket.gameObject); // go boom explosion.gameObject.transform.localPosition = hitPosition; explosion.gameObject.transform.localRotation = Quaternion.LookRotation(hitPosition); var emitParams = new ParticleSystem.EmitParams(); emitParams.startColor = rocket.configuration.sourcePlanet.configuration.mainColor; explosion.Emit(emitParams, 1000 * (int)hitInfo.damageDealt + 100); }