When added before a component class will make sure that whenever the component with the attribute is added to GameObjects, a collider will also be present on the same GameObject.
Attribute Target
Component class
Example
using UnityEngine;
using Sisus.Attributes;
using JetBrains.Annotations;
[RequireCollider, RequireComponent(typeof(Rigidbody)), DisallowMultipleComponent]
public class CollisionSoundEmitter : MonoBehaviour
{
[NotNull]
public AudioClip audioClip;
[Range(0f, 1f)]
public float minVolume = 0.1f;
[Range(0f, 1f)]
public float maxVolume = 1f;
[Min(0.00001f)]
public float velocityRelativeVolumeMultiplier = 0.25f;
void OnCollisionEnter(Collision collision)
{
foreach(var contact in collision.contacts)
{
float volume = collision.relativeVelocity.magnitude * velocityRelativeVolumeMultiplier;
if(volume > minVolume)
{
if(volume > maxVolume)
{
volume = maxVolume;
}
AudioSource.PlayClipAtPoint(audioClip, contact.point, volume);
}
}
}
}
Example Result

See also: RequireCollider2D