質問: ### 前提・実現したいこと Unity、プログラミングとも、始めて2ヶ月の素人です。 **◇積み上げゲームを作成しています** Unityを使って、積み上げゲームを作成しています。(C#を使用しています) 画面をタップするとオブジェクトが生成され、それをどこまでも高く積み上げることができるようにしたいと考えています。 **◇積み上がったオブジェクトの一番上に常にカメラを合わせたい** 積み上がったオブジェクトの一番上のオブジェクトに常にカメラ位置を合わせたいと考えています。 オブジェクトが順調に積み上がっている場合は、積み上がっているオブジェクトの一番上にカメラが移動します。 積み上がったオブジェクトの上部が崩れた場合は、積み残っている一番上のオブジェクトにカメラが移動する形です。 **◇ヒントだけでもいただけると助かります!** 色々と検索してみたのですが、同じようなことを実現しているサイトが見つかりませんでした。 まったくの素人で、どのように実現したら良いかヒントだけでもいただけると助かります。 ### 試したこと 生成されるオブジェクトに、タグをつけて、そのタグを持つオブジェクトと、 画面上部に配置した測定用のオブジェクトの距離を取得。 画面上部に一番近いオブジェクトのY軸にカメラを合わせることを試しましたが、 画面上部でオブジェクトが生成されると、そのオブジェクトが下まで落ちても、カメラが追ってしまいうまくいきませんでした。 ### 途中段階のアプリ 上記は実現できていませんが、途中段階のアプリをリリースいたしました。 https://play.google.com/store/apps/details?id=com.NekoBitoLab.GachaToysByEnglish
回答: 似たような回答を以前したことがあります。 Physics.BoxCastを使用して上から下に向かってRayCastをし当たったポイントを現時点での最高高度として取得するのはどうでしょうか 追記 Unity2Dというのを見落としていました 下記リンクを参考にPhysics2D.BoxCastを試してみてください 参考リンク サンプルの追記 ``` public class RaycastTest : MonoBehaviour { void Update() { //現在の位置から X5 Y5のサイズをBOXを下(0, -1)方向にBoxCastする var result = Physics2D.BoxCast(transform.position, new Vector2(5, 5), 0f, new Vector2(0, -1)); //なにかと衝突した時だけそのオブジェクトの名前をログに出す if (result.collider) { Debug.Log(result.collider.gameObject.name); } } } ``` !イメージ説明 1. スクリプトをRaycastStartPositionにアタッチ 2. RaycastTargetには適切な2D Colliderをアタッチしておく