{"id":316,"date":"2020-09-18T22:27:58","date_gmt":"2020-09-18T13:27:58","guid":{"rendered":"https:\/\/roundwide.com\/?p=316"},"modified":"2021-09-10T17:25:44","modified_gmt":"2021-09-10T08:25:44","slug":"physics-overlap-capsule","status":"publish","type":"post","link":"https:\/\/roundwide.com\/ja\/physics-overlap-capsule\/","title":{"rendered":"[Unity] Physics.OverlapCapsule\u306e\u4f7f\u3044\u65b9"},"content":{"rendered":"\n<p>2021-09-06\u66f4\u65b0: \u5bfe\u8c61\u306eGameObject\u306erotation\u3068\u3001CapsuleCollider\u306edirection\u3092\u8003\u616e\u3059\u308b\u3088\u3046\u306b\u5927\u304d\u304f\u4fee\u6b63\u3057\u305f\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/roundwide.com\/wp-content\/uploads\/2020\/09\/Colliders.png\" alt=\"\"\/><figcaption>Capsule and Cube Collider<\/figcaption><\/figure>\n\n\n\n<p>\u4e0a\u8a18\u306e\u3088\u3046\u306bCapsulCollider\u3068\u91cd\u306a\u3063\u305f2\u3064\u306eCollider\u3092\u53d6\u5f97\u3059\u308b\u306b\u306f\u3001<code>Physics.OverlapCapsule<\/code>\u3092\u4f7f\u7528\u3059\u308b\u3002\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u30ab\u30d7\u30bb\u30eb\u306e\u4f4d\u7f6e\u3068\u5927\u304d\u3055\u3092\u53d7\u3051\u53d6\u308a\u3001\u305d\u306e\u30ab\u30d7\u30bb\u30eb\u3068\u91cd\u306a\u3063\u3066\u3044\u308b\u3059\u3079\u3066\u306eCollider\u3092\u8fd4\u3059\u3002<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Kinematic Rigidbody Trigger Collier\u3092\u69cb\u6210\u3057\u3066\u3001<code>OnTriggerEnter<\/code>\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51e6\u7406\u3059\u308b\u3053\u3068\u3067\u3082Colliders\u3092\u53d6\u5f97\u3067\u304d\u308b\u304c\u3001\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306e\u307b\u3046\u304c\u7c21\u5358\u3060\u3057\u3001\u4fbf\u5229\u306a\u5fdc\u7528\u65b9\u6cd5\u3082\u3042\u308b\u3002<\/p>\n\n\n\n<p><code>Physics.OverlapCapsule<\/code>\u306e\u5fc5\u9808\u306e\u5f15\u6570\u306e\u307f\u306e\u30b7\u30b0\u30cd\u30c1\u30e3\u3092\u4ee5\u4e0b\u306b\u793a\u3059\u3002<\/p>\n\n\n\n<script type=\"text\/plain\" class=\"language-csharp\">Collider[] OverlapCapsule(Vector3 point0, Vector3 point1, float radius);<\/script>\n\n\n\n<p>\u6b21\u306e\u56f3\u306e\u5de6\u5074\u306b\u3053\u308c\u3089\u306e\u5f15\u6570\u3092\u793a\u3059\u3002<code>point0<\/code>\u3068<code>point1<\/code>\u306f\u305d\u308c\u305e\u308c\u3069\u3061\u3089\u304b\u306e\u534a\u7403\u306e\u4e2d\u5fc3\u3092\u8868\u3059\u3002<code>radius<\/code>\u306b\u306f\u534a\u5f84\u304c\u5165\u308b\u3002CapsuleCollider\u306e\u4ed5\u69d8\u306f\u53f3\u5074\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u4e2d\u5fc3\u3001\u9ad8\u3055\u3001\u534a\u5f84\u304b\u3089\u306a\u3063\u3066\u3044\u308b\u3002\u305d\u306e\u305f\u3081\u5909\u63db\u304c\u5fc5\u8981\u3067\u3042\u308b\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"583\" height=\"335\" src=\"https:\/\/roundwide.com\/wp-content\/uploads\/2020\/09\/Physics-OverlapCapsule2-small.png\" alt=\"\" class=\"wp-image-960\" srcset=\"https:\/\/roundwide.com\/wp-content\/uploads\/2020\/09\/Physics-OverlapCapsule2-small.png 583w, https:\/\/roundwide.com\/wp-content\/uploads\/2020\/09\/Physics-OverlapCapsule2-small-300x172.png 300w\" sizes=\"auto, (max-width: 583px) 85vw, 583px\" \/><\/figure>\n\n\n\n<p>\u4ee5\u4e0b\u306f\u3001\u53f3\u306eCapsuleCollider\u306b\u5bfe\u5fdc\u3059\u308b<code>point0<\/code>\u3068<code>point1<\/code>\u306e\u8a08\u7b97\u65b9\u6cd5\u3067\u3042\u308b\u3002 \u3053\u306e\u8a08\u7b97\u306b\u306f\u3001CapsuleCollider\u306edirection\u3092\u8003\u616e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002direction\u306f0, 1, 2\u306e\u3044\u305a\u308c\u304b\u3067\u3042\u308a\u3001\u305d\u308c\u305e\u308cX\u8ef8\u3001Y\u8ef8\u3001Z\u8ef8\u306b\u5bfe\u5fdc\u3059\u308b\u3002<\/p>\n\n\n\n<script type=\"text\/plain\" class=\"language-csharp\">var col = GetComponent<CapsuleCollider>();\nvar direction = new Vector3 {[col.direction] = 1};\nvar offset = col.height \/ 2 - col.radius;\nvar localPoint0 = col.center - direction * offset;\nvar localPoint1 = col.center + direction * offset;\n<\/script>\n\n\n\n<p>\u3053\u306e<code>localPoint0<\/code>\u3068<code>localPoint1<\/code>\u3092\u30ef\u30fc\u30eb\u30c9\u7a7a\u9593\u306b\u5909\u63db\u3059\u308b\u3068<code>point0<\/code>\u3068<code>pint1<\/code>\u306b\u306a\u308b\u3002<\/p>\n\n\n\n<script type=\"text\/plain\" class=\"language-csharp\">var point0 = transform.TransformPoint(localPoint0);\nvar point1 = transform.TransformPoint(localPoint1);\n<\/script>\n\n\n\n<p><code>Physics.OverapCapsule<\/code>\u306e\u534a\u5f84\u3082\u30ef\u30fc\u30eb\u30c9\u7a7a\u9593\u306a\u306e\u3067\u3001CapsuleCollider\u306e\u534a\u5f84\u3092\u30ef\u30fc\u30eb\u30c9\u7a7a\u9593\u306b\u5909\u63db\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u304c\u3001\u5c11\u3057\u9762\u5012\u3067\u3042\u308b\u3002GameObject\u304cdirection\u306e\u5782\u76f4\u9762\u3067\u6955\u5186\u306e\u5834\u5408\u306f\u3001\u534a\u5f84\u3092\u9577\u5f84\u5074\u306b\u62e1\u5927\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002\u4ee5\u4e0b\u306f\u305d\u306e\u5b9f\u88c5\u3067\u3042\u308b\u3002<code>TransformVector<\/code>\u306e\u8fd4\u3059\u30d9\u30af\u30c8\u30eb\u306e\u8981\u7d20\u306f\u30de\u30a4\u30ca\u30b9\u306b\u306a\u308b\u3053\u3068\u304c\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u307b\u3057\u3044\u3002<\/p>\n\n\n\n<script type=\"text\/plain\" class=\"language-csharp\">var r = transform.TransformVector(col.radius, col.radius, col.radius);\nvar radius = Enumerable.Range(0, 3).Select(xyz => xyz == col.direction ? 0 : r[xyz])\n    .Select(Mathf.Abs).Max();\n<\/script>\n\n\n\n<p>\u6700\u5f8c\u306b\u3001\u3053\u308c\u307e\u3067\u306b\u6c42\u3081\u305f\u5024\u3092\u4f7f\u3063\u3066<code>Physics.OverlapCapsule<\/code>\u3092\u547c\u3073\u51fa\u3059\u3002<\/p>\n\n\n\n<script type=\"text\/plain\" class=\"language-csharp\">var cols = Physics.OverlapCapsule(point0, point1, radius);\n<\/script>\n\n\n\n<p>\u5f53\u7136\u306e\u3053\u3068\u306a\u304c\u3089\u3001\u8fd4\u3063\u3066\u304f\u308bCollider\u306b\u306fCapsuleCollider\u3082\u542b\u307e\u308c\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u307b\u3057\u3044\u3002\u907f\u3051\u305f\u3051\u308c\u3070\u3001\u3042\u3089\u304b\u3058\u3081CapsuleCollider\u3092\u7121\u52b9\u5316\u3057\u3066\u304a\u304f\u3068\u3088\u3044\u3002<\/p>\n\n\n\n<p><code>Physics.OverlapCapsule<\/code>\u3092\u7528\u3044\u308b\u3068\u3001\u5bfe\u8c61\u306eCapsuleCollder\u3088\u308a\u3082\u30b5\u30a4\u30ba\u3092\u5c0f\u3055\u304f\u3057\u3066\u3001\u89e6\u308c\u3066\u3044\u308b\u3060\u3051\u306eCollider\u3092\u9664\u5916\u3059\u308b\u3068\u304b\u3001\u30b5\u30a4\u30ba\u3092\u5927\u304d\u304f\u3057\u3066\u63a5\u89e6\u3057\u305d\u3046\u306aCollider\u3092\u53d6\u5f97\u3059\u308b\u3068\u3044\u3063\u305f\u3053\u3068\u304c\u81ea\u5728\u306b\u884c\u3048\u308b\u3002<\/p>\n\n\n\n<p>\u3068\u3053\u308d\u3067\u3001<code>Physics.OverlapCapsule<\/code>\u306f\u547c\u3076\u305f\u3073\u306b\u914d\u5217\u3092\u30a2\u30ed\u30b1\u30fc\u30c8\u3057\u3066\u7d50\u679c\u3092\u8fd4\u3059\u306e\u3067\u3001\u6bce\u30d5\u30ec\u30fc\u30e0\u547c\u3076\u5834\u5408\u306b\u306f\u5927\u91cf\u306b\u30b4\u30df\u304c\u51fa\u3066\u3057\u307e\u3046\u3002\u305d\u306e\u5834\u5408\u306b\u306f\u3001<code>Physics.OverlapCapsuleNonAlloc<\/code>\u3067\u4e8b\u524d\u306b\u30a2\u30ed\u30b1\u30fc\u30c8\u3057\u305f\u914d\u5217\u3067\u7d50\u679c\u3092\u53d7\u3051\u53d6\u308b\u3002\u4f7f\u7528\u4f8b\u3092\u4ee5\u4e0b\u306b\u793a\u3059\u3002<\/p>\n\n\n\n<script type=\"text\/plain\" class=\"language-csharp\">class DetectOverlap\n{\n    readonly Collider[] _result = new Collider[5];\n\n    void Update()\n    {\n        ...\n        var num = Physics.OverlapCapsuleNonAlloc(point0, point1, radius, _result);\n    }\n}<\/script>\n\n\n\n<p>\u91cd\u306a\u308a\u30925\u3064\u307e\u3067\u691c\u51fa\u3059\u308b\u5834\u5408\u306f\u30015\u8981\u7d20\u306eCollider\u306e\u914d\u5217\u3092Update\u306e\u5916\u3067\u4f5c\u3063\u3066\u304a\u304f\u3002\u305d\u308c\u3092<code>Physics.OverlapCapsuleNonAlloc<\/code>\u306b\u6e21\u3057\u3066\u5b9f\u884c\u3059\u308b\u3068\u3001<code>_result<\/code>\u306b\u691c\u51fa\u3057\u305fCollider\u304c\u683c\u7d0d\u3055\u308c\u3066\u3001\u305d\u306e\u6570\u304c\u8fd4\u5024\u3068\u3057\u3066\u8fd4\u308b\u3002<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>2021-09-06\u66f4\u65b0: \u5bfe\u8c61\u306eGameObject\u306erotation\u3068\u3001CapsuleCollider\u306edirection\u3092\u8003\u616e\u3059\u308b\u3088\u3046\u306b\u5927\u304d\u304f\u4fee\u6b63\u3057\u305f\u3002 \u4e0a\u8a18\u306e\u3088\u3046\u306bCapsulCollider\u3068\u91cd\u306a\u3063\u305f2\u3064\u306eCo &hellip; <a href=\"https:\/\/roundwide.com\/ja\/physics-overlap-capsule\/\" class=\"more-link\"><span class=\"screen-reader-text\">\"[Unity] Physics.OverlapCapsule\u306e\u4f7f\u3044\u65b9\" \u306e<\/span>\u7d9a\u304d\u3092\u8aad\u3080<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"ja","_original_post":"https:\/\/roundwide.com\/?p=316","footnotes":""},"categories":[8],"tags":[],"class_list":["post-316","post","type-post","status-publish","format-standard","hentry","category-unity","ja"],"_links":{"self":[{"href":"https:\/\/roundwide.com\/wp-json\/wp\/v2\/posts\/316","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/roundwide.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/roundwide.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/roundwide.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/roundwide.com\/wp-json\/wp\/v2\/comments?post=316"}],"version-history":[{"count":56,"href":"https:\/\/roundwide.com\/wp-json\/wp\/v2\/posts\/316\/revisions"}],"predecessor-version":[{"id":973,"href":"https:\/\/roundwide.com\/wp-json\/wp\/v2\/posts\/316\/revisions\/973"}],"wp:attachment":[{"href":"https:\/\/roundwide.com\/wp-json\/wp\/v2\/media?parent=316"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/roundwide.com\/wp-json\/wp\/v2\/categories?post=316"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/roundwide.com\/wp-json\/wp\/v2\/tags?post=316"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}