1

私はゲームのようなサバイバル ホラーを構築しており、メカニズムを補完する非常に優れたカメラ システムを作成したいと考えています。これの一部は、しゃがんで顔を覆うことができるという事実です。これでやりたいカメラワークは、プレイヤーのビューを制限するためにキャラクターにズームインすることです。

私が持っている現在のMC構造は次のとおりです。

GameMaster > Spawner (これはプレイヤーとすべての敵用です) > Player

私が抱えている問題は、GameMaster (サイド スクロールやその他のグローバル ゲーム エフェクトが発生する場所) をスケーリングすると、プレイヤーが 0,0 からどれだけ離れているかに基づいて、カメラのセンタリングがオフセットされることです。

このビデオで問題をはっきりと見ることができます。赤い矢印は 0,0 を指しています。

このstackoverflowの質問では、すべてのコンテナを作成し、ズームしたいターゲットの上にコンテナを0,0の中心に配置するように回答されています。これは、4 つの MC がネストされたオブジェクトの適切な座標を取得する必要があるため、私にとっては難しい課題です。また、現在の横スクロール カメラでそれがどうなるかわかりません。

キャラクターがアヒルになったときのオフセットを数学的に計算する方法はありますか? しゃがみを離してカメラがズームアウトするまで移動できないため、実行可能なオプションのようです。

そうでない場合、コンテナ MC は適切なオプションですか、それとも「やらなければならないことをやらなければならない」ものの 1 つにすぎませんか。タイプの状況?

[追加] Transform Matrices か何かについてもわかります。それはうまくいくものですか?私はそれらについて何も知りませんが、それらは CPU に負荷がかかり、ゲーム全体に普及しているメカニズムには適していないと思います。

[追加2] また、同じ0,0の問題を抱えた回転カメラエフェクトをやりたいです。プレーヤーとレベルがピボットポイントから離れたところを中心に回転しているように露骨に現れます。

Transform Matrix が迅速かつ機能的に 0,0 をプレーヤーの位置にオフセットできる場合、すべてのカメラ エフェクトと変更を行うことができます。それが最善の方法かもしれないと思います。

----結論に近い---- Vespers answer に関して。結果の変換をトゥイーンできますか? もしそうなら、それは私の問題全体を完全に解決します。そうでない場合、希望する結果を得る方法がわかりません。

4

1 に答える 1

0

コンテナが最もクリーンなソリューションだと思います。プレーヤーを中心に配置されるため、回転とスケーリングは正常に機能します。ネストされた MC の座標を取得するのは難しいとおっしゃいましたが、まさにそれを行うための組み込み関数があります。localToGlobal()

グローバル座標でプレイヤーの位置を取得するには、単にplayer.localToGlobal(new Point(0, 0)). これにより、プレーヤーの中心がグローバル座標で返されます。メイン コンテナーがグローバル座標にない場合 (たとえば、別の変換された MC 内にネストされているため)、コンテナーで反対の関数を使用して、グローバルからローカルに変換できます。

container.globalToLocal(player.localToGlobal(new Point(0, 0)))

あとは、コンテナを中央に配置するだけです。これは、カメラの動きをシミュレートするためにも使用できます。フレームごとにコンテナーの位置を更新すると、カメラがプレーヤーを追跡する効果が得られます。

于 2012-11-21T17:47:11.383 に答える