{"id":1540,"date":"2019-11-20T15:21:41","date_gmt":"2019-11-20T15:21:41","guid":{"rendered":"https:\/\/docs.sisus.co\/power-inspector\/?p=1540"},"modified":"2021-03-24T17:50:40","modified_gmt":"2021-03-24T17:50:40","slug":"requirecollider","status":"publish","type":"post","link":"https:\/\/docs.sisus.co\/power-inspector\/attributes\/requirecollider\/","title":{"rendered":"RequireCollider"},"content":{"rendered":"<p>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.<\/p>\n<h2>Attribute Target<\/h2>\n<p>Component class<\/p>\n<h2>Example<\/h2>\n<pre>using UnityEngine;\r\nusing Sisus.Attributes;\r\nusing JetBrains.Annotations;\r\n\r\n[RequireCollider, RequireComponent(typeof(Rigidbody)), DisallowMultipleComponent]\r\npublic class CollisionSoundEmitter : MonoBehaviour\r\n{\r\n\t[NotNull]\r\n\tpublic AudioClip audioClip;\r\n\t[Range(0f, 1f)]\r\n\tpublic float minVolume = 0.1f;\r\n\t[Range(0f, 1f)]\r\n\tpublic float maxVolume = 1f;\r\n\t[Min(0.00001f)]\r\n\tpublic float velocityRelativeVolumeMultiplier = 0.25f;\r\n\r\n\tvoid OnCollisionEnter(Collision collision)\r\n\t{\r\n\t\tforeach(var contact in collision.contacts)\r\n\t\t{\r\n\t\t\tfloat volume = collision.relativeVelocity.magnitude * velocityRelativeVolumeMultiplier;\r\n\t\t\tif(volume &gt; minVolume)\r\n\t\t\t{\r\n\t\t\t\tif(volume &gt; maxVolume)\r\n\t\t\t\t{\r\n\t\t\t\t\tvolume = maxVolume;\r\n\t\t\t\t}\r\n\t\t\t\tAudioSource.PlayClipAtPoint(audioClip, contact.point, volume);\r\n\t\t\t}\t\t\t\r\n\t\t}\r\n\t}\r\n}<\/pre>\n<h2>Example Result<\/h2>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-1541\" src=\"https:\/\/docs.sisus.co\/power-inspector\/wp-content\/uploads\/2019\/11\/unity-RequireCollider-attribute.png\" alt=\"\" width=\"1119\" height=\"300\" srcset=\"https:\/\/docs.sisus.co\/power-inspector\/wp-content\/uploads\/sites\/2\/2019\/11\/unity-RequireCollider-attribute.png 1119w, https:\/\/docs.sisus.co\/power-inspector\/wp-content\/uploads\/sites\/2\/2019\/11\/unity-RequireCollider-attribute-300x80.png 300w, https:\/\/docs.sisus.co\/power-inspector\/wp-content\/uploads\/sites\/2\/2019\/11\/unity-RequireCollider-attribute-1024x275.png 1024w, https:\/\/docs.sisus.co\/power-inspector\/wp-content\/uploads\/sites\/2\/2019\/11\/unity-RequireCollider-attribute-768x206.png 768w\" sizes=\"(max-width: 1119px) 100vw, 1119px\" \/><\/p>\n<p>&nbsp;<\/p>\n<blockquote><p><strong>See also: <a href=\"https:\/\/docs.sisus.co\/power-inspector\/attributes\/requirecollider2d\/\">RequireCollider2D<\/a><\/strong><\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>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, ..<\/p>\n<div class=\"clear-fix\"><\/div>\n<p><a href=\"https:\/\/docs.sisus.co\/power-inspector\/attributes\/requirecollider\/\" title=\"read more\">Read more<\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[26],"tags":[],"_links":{"self":[{"href":"https:\/\/docs.sisus.co\/power-inspector\/wp-json\/wp\/v2\/posts\/1540"}],"collection":[{"href":"https:\/\/docs.sisus.co\/power-inspector\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/docs.sisus.co\/power-inspector\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/docs.sisus.co\/power-inspector\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/docs.sisus.co\/power-inspector\/wp-json\/wp\/v2\/comments?post=1540"}],"version-history":[{"count":4,"href":"https:\/\/docs.sisus.co\/power-inspector\/wp-json\/wp\/v2\/posts\/1540\/revisions"}],"predecessor-version":[{"id":1838,"href":"https:\/\/docs.sisus.co\/power-inspector\/wp-json\/wp\/v2\/posts\/1540\/revisions\/1838"}],"wp:attachment":[{"href":"https:\/\/docs.sisus.co\/power-inspector\/wp-json\/wp\/v2\/media?parent=1540"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/docs.sisus.co\/power-inspector\/wp-json\/wp\/v2\/categories?post=1540"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/docs.sisus.co\/power-inspector\/wp-json\/wp\/v2\/tags?post=1540"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}