top of page
BTA(Kelorin Jo)

選択オブジェクト全体を採寸するスクリプト


エディタ拡張などで3Dオブジェクトを隙間なく並べるには、ます寸法を知る必要がありますが

RenderからBoundsで取得できます

しかし幅をカスタムするまで考えると、ボックスコライダーあったほうが便利だなということで

オブジェクトを採寸してぴったりサイズのボックスコライダーを作るというコードを書きました

採寸するコードとボックスコライダーを後から生成するコード、2つ合わさった記事が見つからなかったのでここに記します。

親オブジェクトだけでなく子オブジェクトまで調べて全体の寸法です。

(普通にボックスコライダーをアタッチではそのオブジェクトの寸法しかとらない)

(孫オブジェクトまでは判定してません)

アタッチして実行するとコライダーが作られます。(エディタ拡張ではないです)

2017.4,2018.4,2019.2で動作確認

注意点

前回の整列させるスクリプトもですが、

内部ではまずオブジェクトを原点に移動して回転スケールをリセットしてから採寸、ボックスコライダーをアタッチしてから元の位置に戻すということをしてます。

この方法だと、staticにしてあるオブジェクトは動かせないので正確に採寸できません。staticをオフにする必要があります。(移動させずに採寸するのは超難しい)

昭和町や村のモデルは全部staticにしちゃってたわあ…

苦しんだポイント

ボックスコライダーをアタッチする正しい構文が

var bc = gameObject.AddComponent<BoxCollider>() as BoxCollider; gameObject.AddComponent<までが定型文と知らず必死でthis.AddComponent<で通そうとして6時間も… 取得するGetComponentのほうは、this.GetComponent<>()で通るのに… 自分でなく別のゲームオブジェクトにアタッチする場合は、 TargetGameObject.gameObject.AddComponent<みたいに書きます。ゲームオブジェクトがかぶってるやんけ

閲覧数:396回0件のコメント

最新記事

すべて表示

noteはじめました。

というかnoteに移行します。このブログ微妙に使いづらいんですよ https://note.com/funsetmodev 内容は大体同じプログラムの話し多め、時々雑感日常です。

bottom of page