teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

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

2018/03/21 22:23

投稿

Bongo
Bongo

スコア10816

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 (rendererCount > 0)
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
- Bounds unitedBounds = renderers[0].bounds; // 0番目レンダラーのバウンディングボックスを取得
69
+ int rendererCount = renderers.Length; // 見つかったレンダラーの
68
70
 
69
- for (int i = 1; i < rendererCount; i++)
71
+ if (rendererCount > 0)
70
72
  {
73
+ Bounds unitedBounds = renderers[0].bounds; // 0番目レンダラーのバウンディングボックスを取得
74
+
75
+ for (int i = 1; i < rendererCount; i++)
76
+ {
71
- unitedBounds.Encapsulate(renderers[i].bounds); // unitedBoundsに1番目以降のレンダラーのバウンディングボックスを結合していく
77
+ unitedBounds.Encapsulate(renderers[i].bounds); // unitedBoundsに1番目以降のレンダラーのバウンディングボックスを結合していく
78
+ }
79
+
80
+ currentTargetCenter = unitedBounds.center; // 結合したバウンディングボックスの中心を新たな中心点とする
72
81
  }
73
-
82
+ else
83
+ {
74
- currentTargetCenter = unitedBounds.center; // 結合したバウディングボッ中心新たな中心とする
84
+ currentTargetCenter = currentTarget.position; // ダラーがないオブジェ場合、positionを中心とする
85
+ }
75
86
  }
76
87
  }
77
88
  }