ロバメモ - 素人のUnity覚書と奮闘記

素人のUnity覚書と奮闘記

Box Collider 2Dのサイズをスクリプトで変更する

やりたいこと

当たり判定で使うBox Colliderをオブジェクトのサイズに合わせる方法。
具体的には、下のようなBox Collier 2Dがアタッチされたゲームオブジェクトを引き伸ばして配置したときに、 Box Colliderのサイズがリンクしないので、ステージに配置された時にオブジェクトのサイズに合わせるようにしたい。
f:id:nico-taniku:20170628155544p:plain:w150

f:id:nico-taniku:20170628155703p:plain:w500

コード

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ResizeBoxCollier2D : MonoBehaviour
{
    void Start ()
    {
        //コライダーのサイズをオブジェクトに合わせる
        Vector2 objectSize = gameObject.GetComponent<RectTransform> ().sizeDelta;
        BoxCollider2D collider = GetComponent<BoxCollider2D> ();
        collider.size = objectSize;
    }
}

ゲームオブジェクトのサイズを取得するには

Vector2 objectSize = gameObject.GetComponent<RectTransform> ().sizeDelta;

コライダーを取得してサイズを設定するには

BoxCollider2D collider = GetComponent<BoxCollider2D> ();
collider.size = objectSize;

確認する

プレビューして確認してみる。
コライダーは映らないので、インスペクターでサイズをみるとわかる。
プレビュー前
f:id:nico-taniku:20170628160659p:plain:h300

プレビュー後
f:id:nico-taniku:20170628160715p:plain:h300