コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】PolygonCollider2D をスプライトの形に動的に変更する方法

概要

using System.Collections.Generic;
using UnityEngine;

public class Example : MonoBehaviour
{
    private void Awake()
    {
        var spriteRenderer    = GetComponent<SpriteRenderer>();
        var sprite            = spriteRenderer.sprite;
        var polygonCollider2D = GetComponent<PolygonCollider2D>();
        var physicsShapeCount = sprite.GetPhysicsShapeCount();

        polygonCollider2D.pathCount = physicsShapeCount;

        var physicsShape = new List<Vector2>();

        for ( var i = 0; i < physicsShapeCount; i++ )
        {
            physicsShape.Clear();
            sprite.GetPhysicsShape( i, physicsShape );
            var points = physicsShape.ToArray();
            polygonCollider2D.SetPath( i, points );
        }
    }
}