回答編集履歴
1
レンダラーが見つからなかった場合、中心点を代替座標にするよう変更
answer
CHANGED
@@ -59,19 +59,30 @@
|
|
59
59
|
{
|
60
60
|
currentTarget = target;
|
61
61
|
|
62
|
-
Renderer[] renderers = currentTarget.GetComponentsInChildren<Renderer>(); // 注目オブジェクトおよびその子の持つすべてのレンダラーを探す
|
63
|
-
int rendererCount = renderers.Length; // 見つかったレンダラーの数
|
64
|
-
|
65
|
-
if (
|
62
|
+
if (currentTarget == null)
|
66
63
|
{
|
64
|
+
currentTargetCenter = Vector3.zero; // ターゲットがnullなら(0, 0, 0)を中心とする
|
65
|
+
}
|
66
|
+
else
|
67
|
+
{
|
68
|
+
Renderer[] renderers = currentTarget.GetComponentsInChildren<Renderer>(); // 注目オブジェクトおよびその子の持つすべてのレンダラーを探す
|
67
|
-
|
69
|
+
int rendererCount = renderers.Length; // 見つかったレンダラーの数
|
68
70
|
|
69
|
-
|
71
|
+
if (rendererCount > 0)
|
70
72
|
{
|
73
|
+
Bounds unitedBounds = renderers[0].bounds; // 0番目レンダラーのバウンディングボックスを取得
|
74
|
+
|
75
|
+
for (int i = 1; i < rendererCount; i++)
|
76
|
+
{
|
71
|
-
|
77
|
+
unitedBounds.Encapsulate(renderers[i].bounds); // unitedBoundsに1番目以降のレンダラーのバウンディングボックスを結合していく
|
78
|
+
}
|
79
|
+
|
80
|
+
currentTargetCenter = unitedBounds.center; // 結合したバウンディングボックスの中心を新たな中心点とする
|
72
81
|
}
|
73
|
-
|
82
|
+
else
|
83
|
+
{
|
74
|
-
|
84
|
+
currentTargetCenter = currentTarget.position; // レンダラーがないオブジェクトの場合、positionを中心とする
|
85
|
+
}
|
75
86
|
}
|
76
87
|
}
|
77
88
|
}
|