レベルエディターで視差レイヤーを視覚化するにはどうすればよいですか?


9

Unityで2Dゲームを作成していますが、これはどの2Dゲームエンジンにも当てはまります。

正射投影カメラで多平面視差を実装する場合、背景レイヤーのスプライトをレイアウトし、それらが他のレイヤーのスプライトとどこに並ぶかを知ることは困難です。

私の最初の本能は、各レイヤーに1つずつ複数のカメラを使用し、背景レイヤーのカメラの移動速度を縮小することでした。これにより、すべての背景スプライトをフレームごとに移動する必要がなくなります。問題は、半分の速度で移動するレイヤーが、エディターで表示したときにメインレイヤーの半分のスペースを占めることです。そのため、ゲームをレイアウトするときにスプライトをどこに配置するかを知ることは困難です。レイヤー数を増やすと、問題は指数関数的に悪化します。

どうすればこれを回避できますか?エディターで作業しながら、レイヤーを意図した移動速度で逆スケーリングしてみました。これにより、すべての背景スプライトがメインレイヤーに対して正しい位置に配置されますが、ひどく歪んでいます。

視差の背景をテストするために、それを吸い上げて、エディターと実行中のゲームを常に切り替える必要がありますか?


4
そのようなゲームをしたときは、エディターでカメラの周りをドラッグして、視差がどのように機能するかを確認できるようにしました。しかし、Unityでそのようなことを具体的にどのように行うかは、手元ではわかりません。
テトラッド2013年

回答:


1

私はUnityに慣れていないので、具体的な説明はできませんが、たとえば一連のスライダーや数値フィールドを使用して実行時にこれらの値を微調整するGUI手段を実装する必要があるようです。フィールドを実装して、実行中にユーザーが決定している値(スケール、速度など)を変更して、フィードバックを即座に提供するのは非常に簡単です。配置については、フィールドまたはクリックドラッグによる手動配置のいずれかを使用できます(実装は少し難しいかもしれませんが、はるかに直感的です)。

これにより、変更の小さな部分ごとにコードをコンパイルして実行することなく、完全に制御できます。最終的に満足できるルックアンドフィールに到達したら、これらの値を定数のリストで使用します。編集している変数の数(たとえば、多数のレベルの多数のスプライトの場所)のためにこれが困難すぎる場合は、レベルエディターに実装することをお勧めします。手動調整と同じ機能ですが、調整されたデータの作成と保存の結果。


はい、レベルエディターを使用するのが最善の方法のようです。独自にコーディングする場合でも、Unityを使用する場合は、既存のエディターで動作するように設定する場合でも同様です。各レイヤーに個別のカメラオブジェクトを使用してパララックスセットアップをコーディングしました。各カメラは、メインカメラの各フレームに対して適切に移動します。次に、[ExecuteInEditMode]を使用して、メインカメラがエディターでドラッグされている場合でもそれらを更新します。メインカメラを直接動かすことだけを覚えておく必要があります。
TenFour04

1

アイデア:フロントレイヤー用のカメラで十分だと思います。スプライトをz平面上のスプライトから離れた距離に配置し、距離をレイピングすると、その背面レイヤーを移動する割合が得られます。

たとえば、前面カメラから10の距離にあるオブジェクトは、背景レイヤーで1/10移動します。距離2のオブジェクトは、それぞれのレイヤーで1/2移動します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.