回答編集履歴
1
レンダラーが見つからなかった場合、中心点を代替座標にするよう変更
test
CHANGED
@@ -120,31 +120,53 @@
|
|
120
120
|
|
121
121
|
|
122
122
|
|
123
|
-
|
123
|
+
if (currentTarget == null)
|
124
124
|
|
125
|
+
{
|
126
|
+
|
127
|
+
currentTargetCenter = Vector3.zero; // ターゲットがnullなら(0, 0, 0)を中心とする
|
128
|
+
|
129
|
+
}
|
130
|
+
|
131
|
+
else
|
132
|
+
|
133
|
+
{
|
134
|
+
|
135
|
+
Renderer[] renderers = currentTarget.GetComponentsInChildren<Renderer>(); // 注目オブジェクトおよびその子の持つすべてのレンダラーを探す
|
136
|
+
|
125
|
-
int rendererCount = renderers.Length; // 見つかったレンダラーの数
|
137
|
+
int rendererCount = renderers.Length; // 見つかったレンダラーの数
|
126
138
|
|
127
139
|
|
128
140
|
|
129
|
-
if (rendererCount > 0)
|
141
|
+
if (rendererCount > 0)
|
130
142
|
|
131
|
-
{
|
143
|
+
{
|
132
144
|
|
133
|
-
Bounds unitedBounds = renderers[0].bounds; // 0番目レンダラーのバウンディングボックスを取得
|
145
|
+
Bounds unitedBounds = renderers[0].bounds; // 0番目レンダラーのバウンディングボックスを取得
|
134
146
|
|
135
147
|
|
136
148
|
|
137
|
-
for (int i = 1; i < rendererCount; i++)
|
149
|
+
for (int i = 1; i < rendererCount; i++)
|
150
|
+
|
151
|
+
{
|
152
|
+
|
153
|
+
unitedBounds.Encapsulate(renderers[i].bounds); // unitedBoundsに1番目以降のレンダラーのバウンディングボックスを結合していく
|
154
|
+
|
155
|
+
}
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
currentTargetCenter = unitedBounds.center; // 結合したバウンディングボックスの中心を新たな中心点とする
|
160
|
+
|
161
|
+
}
|
162
|
+
|
163
|
+
else
|
138
164
|
|
139
165
|
{
|
140
166
|
|
141
|
-
un
|
167
|
+
currentTargetCenter = currentTarget.position; // レンダラーがないオブジェクトの場合、positionを中心とする
|
142
168
|
|
143
169
|
}
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
currentTargetCenter = unitedBounds.center; // 結合したバウンディングボックスの中心を新たな中心点とする
|
148
170
|
|
149
171
|
}
|
150
172
|
|