/// <summary> /// Initializes the destructible properties. /// </summary> /// <param name="damageAmount">The amount of damage to apply to the hit object.</param> /// <param name="impactForce">The amount of force to apply to the hit object.</param> /// <param name="impactForceFrames">The number of frames to add the force to.</param> /// <param name="impactLayers">The layers that the projectile can impact with.</param> /// <param name="impactStateName">The name of the state to activate upon impact.</param> /// <param name="impactStateDisableTimer">The number of seconds until the impact state is disabled.</param> /// <param name="surfaceImpact">A reference to the Surface Impact triggered when the object hits an object.</param> public void InitializeDestructibleProperties(float damageAmount, float impactForce, int impactForceFrames, LayerMask impactLayers, string impactStateName, float impactStateDisableTimer, SurfaceImpact surfaceImpact) { m_Destroyed = false; m_DamageAmount = damageAmount; m_ImpactForce = impactForce; m_ImpactForceFrames = impactForceFrames; m_ImpactLayers = impactLayers; m_ImpactStateName = impactStateName; m_ImpactStateDisableTimer = impactStateDisableTimer; // The SurfaceImpact may be set directly on the destructible prefab. if (m_SurfaceImpact == null) { m_SurfaceImpact = surfaceImpact; } if (m_TrailRenderer != null) { m_TrailRenderer.Clear(); m_TrailRenderer.enabled = true; } if (m_ParticleSystem != null) { m_ParticleSystem.Play(); } if (m_Collider != null) { m_Collider.enabled = false; } // The object may be reused and was previously stuck to a character. if (m_StickyCharacterLocomotion != null) { m_StickyCharacterLocomotion.RemoveSubCollider(m_Collider); m_StickyCharacterLocomotion = null; } }