コガネブログ

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

【Unity】CircleCollider2D の Offset と Radius を Sprite に合わせて調整する拡張メソッド

ソースコード

using System.Collections.Generic;
using UnityEngine;

namespace Kogane
{
    public static class CircleCollider2DExtensionMethods
    {
        public static IReadOnlyList<CircleCollider2D> UpdateFromSprite
        (
            this IReadOnlyList<CircleCollider2D> self,
            IReadOnlyList<Sprite>                sprites
        )
        {
            for ( var i = 0; i < self.Count; i++ )
            {
                var circleCollider2D = self[ i ];
                var sprite           = sprites[ i ];

                circleCollider2D.UpdateFromSprite( sprite );
            }

            return self;
        }

        public static CircleCollider2D UpdateFromSprite
        (
            this CircleCollider2D self,
            Sprite                sprite
        )
        {
            var size = sprite.bounds.size;

            self.radius = Mathf.Max( size.x, size.y ) * 0.5f;
            self.offset = sprite.bounds.center;

            return self;
        }
    }
}