私は、Spawnerオブジェクトを翻訳するx軸からブロックをインスタンス化する、Unityでの2Dブロックスタッキングゲームを作成しています。私が直面している問題は、スタックが高すぎてスポーナに近づいたときです。スポンサーとゲームカメラをY軸上に移動する必要があります。プレハブのスタックを測定して、Boundsを使用して高さを取得しています私はいつカメラとスポーナーを動かすかを知っています。私が直面している問題は、GetMaxBounds関数を呼び出し、parentBounds変数に追加していない追加ポイントをカプセル化するときです。私のparentBounds.max.yは決して増加しません。私はプログラミングとC#の初心者です。前もって感謝します。Unity3D - オブジェクトのスタックの高さを測定する方法は?
if (Input.GetMouseButtonDown(0)) {
Instantiate (fallingBrick, spawnPosObj.transform.position, Quaternion.identity, parentStack.transform);
var parentBounds = GetMaxBounds (parentStack);
Debug.Log (parentBounds.max.y);
}
}
Bounds GetMaxBounds(GameObject g) {
var b = new Bounds(g.transform.position, Vector3.zero);
foreach (Renderer r in g.GetComponentsInChildren<Renderer>()) {
b.Encapsulate(r.bounds);
}
return b;
}
スタック内の個々のオブジェクトの高さを追加するだけです。 –
ありがとうございます。問題は、それらが常に均等にスタックするとは限らないことです。ときどき転倒し、回転し、異なる高さで終わる。 – Lewie
ブロックがタワーに積み重なっているかどうかチェックしていますか?そうであれば、うまく積み重ねられ、単一のブロックの高さで乗算されるすべてのオブジェクトを通過できます。 –