Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- public class ImpactCollision : MonoBehaviour
- {
- public GameObject collisionEffect;
- public GameObject destroyedVersion;
- public float rotationSpeed = 100f;
- public float minimumEffectForce = 2f;
- public float minimumBreakForce = 4f;
- private GameObject instantiatedEffect;
- private ParticleSystem activeParticleSystem;
- private bool effectActive = false;
- private void OnCollisionEnter(Collision collision)
- {
- if (collision.relativeVelocity.magnitude > minimumEffectForce && !effectActive)
- {
- instantiatedEffect = Instantiate(collisionEffect, transform.position, Quaternion.identity);
- activeParticleSystem = instantiatedEffect.GetComponent<ParticleSystem>();
- activeParticleSystem.Play();
- effectActive = true;
- if (collision.relativeVelocity.magnitude > minimumBreakForce)
- {
- Instantiate(destroyedVersion, transform.position, transform.rotation);
- Destroy(gameObject);
- }
- }
- }
- private void Update()
- {
- if (!effectActive) return;
- if (instantiatedEffect.transform.position != transform.position)
- {
- instantiatedEffect.transform.position = Vector3.MoveTowards(instantiatedEffect.transform.position,
- transform.position,
- 2f * Time.deltaTime);
- }
- instantiatedEffect.transform.Rotate(0, rotationSpeed * Time.deltaTime, 0);
- if (activeParticleSystem.isStopped)
- {
- Destroy(instantiatedEffect);
- effectActive = false;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement