現在メニューシーンでいわゆるスキルツリーを作成しようとしています。
しかしメニューシーンではカメラ制御はされない為、
カメラ範囲外にまで広いツリーを作ろうとするとカメラ移動せず困っています。
やはり現状ではゲームシーンで作成→メインシーン等からシーン遷移させるしかないでしょうか。
もしくはメニューシーンのオブジェクト群を移動させてカメラが動いているように見せかける
という方法も思いつきましたが作業が大変になりそうなので保留しています。
現在メニューシーンでいわゆるスキルツリーを作成しようとしています。
しかしメニューシーンではカメラ制御はされない為、
カメラ範囲外にまで広いツリーを作ろうとするとカメラ移動せず困っています。
やはり現状ではゲームシーンで作成→メインシーン等からシーン遷移させるしかないでしょうか。
もしくはメニューシーンのオブジェクト群を移動させてカメラが動いているように見せかける
という方法も思いつきましたが作業が大変になりそうなので保留しています。
スキルツリーはどのように構築されており、どのような動きを求めていますか(ツリー自体を移動するか、カメラを移動するか)?
AGMは、メニューシーンが画面サイズに固定されており、開発者がインベントリやゲーム設定の管理にスクロール、タブ、またはその他のサブ分割を使用することを前提としています。
メニュー画面では画面の移動ができないという仕様は、現在のAGMの設定によるものです。
以前、大きなマップ上にいくつかの小規模な建造物を配置し、建造物を開いて各セクションをアップグレードしたことがあります。
固定カメラで画面移動を行わないメニューでは、ダイレクトにメニュー画面を表示していました。
しかし、チャット専用のシーンを作成し、そこで画面の移動や奥行き(ディープスリープ)の表現が必要な場合、新しいゲームシーンを作成することで実装できました。
注意点として、シーン切り替えにより内部の各種変数がリセットされるため、シーン間の移行には特に注意が必要です。
私の提案としては、サイズ制限を超えるような機能や、カメラ移動が必要な場合は、新しいシーンを作成して実装することをお勧めします。
ありがとうございます。現在はカメラ移動を想定しています。
やはりメニューシーンは画面サイズ固定のようですので別ゲームシーンを作成したいと思います。
>注意点として、シーン切り替えにより内部の各種変数がリセットされるため、シーン間の移行には特に注意が必要です。
ありがとうございます。変数はプロジェクト変数で持たせようと思います。
シーンを変更する前に試す価値があること:木を動かすことは、一つ一つのオブジェクトを動かすことを意味しません。それがあなたがその案を棚上げしていた理由です。
各ノードを固定された木座標に保ち、スクロールオフセットを一つだけ保持します。描画時には、各ノードをその座標にオフセットを加えた位置に描画し、可視矩形の外側に結果が落ちるノードは描画をスキップします。これにより、パニングはオブジェクトごとに作業を行うのではなく、変数一つの変更で済みます。また、スキップ処理によって大きな木でも描画コストを抑えることができます。
また、serbowが指摘していた問題も回避できます。メニューシーンから離れないため、遷移時に何もリセットされないからです。
リアルなカメラのイージング、パララックス、奥行きのある演出などを求めるのであれば、独立したゲームシーンを使うのがまだ最適な解決策です。単にパニングが必要でフラットな木の場合、オフセットを使う方がシーンを入れ替えるよりもトラブルが少ないことがほとんどです。
AGMでこれを具体的に実装したことはありませんので、正確なAPIについては未検証として扱ってください。ただし、このパターンはスクロールパネルの一般的な実装方法であり、多くのエンジンで通用するものです。
ありがとうございます。あれから色々試してみたところ
・MenuScene、もしくはMenuSceneのCanvasLayerのオフセットを移動→移動できない
・ゲームオブジェクトを移動→移動できる
ことは判明したため、
①画面アイコン等に共通のオブジェクトグループを作成し、グループ指定でオブジェクトを移動させる
②1つのゲームオブジェクトの中に画面アイコン等の必要なオブジェクトをすべて格納し、オブジェクトを移動させる
ことで想定実装は可能そうでした。
