回答編集履歴

1

レンダラーが見つからなかった場合、中心点を代替座標にするよう変更

2018/03/21 22:23

投稿

Bongo
Bongo

スコア10807

test CHANGED
@@ -120,31 +120,53 @@
120
120
 
121
121
 
122
122
 
123
- Renderer[] renderers = currentTarget.GetComponentsInChildren<Renderer>(); // 注目オブジェクトおよびその子の持つすべてのレンダラーを探す
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
- unitedBounds.Encapsulate(renderers[i].bounds); // unitedBoundsに1番目以降のレンダラーのバウンディングボックス結合していく
167
+ currentTargetCenter = currentTarget.position; // レンダラーがないオブジェクト場合、position中心とする
142
168
 
143
169
  }
144
-
145
-
146
-
147
- currentTargetCenter = unitedBounds.center; // 結合したバウンディングボックスの中心を新たな中心点とする
148
170
 
149
171
  }
150
172