Unity2Dトールグラス


8

Unityを使用して2Dトップダウンゲームを作成しています。これまでのところすべてが順調ですが、適切に解決できない問題に直面しています。

キャラクターの一部が隠れてしまう「背の高い草地」を実装したい。

視覚的な例:

私は背の高い草をレイヤーごとに作成することを考えていましたが、それはゲームオブジェクトの多くを作成し、キャラクターが上に移動するときの遷移は十分に滑らかではありません。

私はこれにどのようにアプローチできますか?シェーダーを使用してこのようなことを達成できると思ったのですが、私のシェーダーに関する知識は非常に限られているため、そのようなことが可能かどうかさえわかりません。


6
たくさんのゲームオブジェクトを操作する必要がある場合もあります。

ゲームオブジェクトの追加を回避する一種のハックは、プレーヤスプライトを草の中にあるときに、スプライトのカスタム「isInGrass」バージョン(ここでは非常に大まかな例)に置き換え、それを上に描画することです。素敵なアートと下部の透明度(実際の草に溶け込むのを助けるため)があれば、十分によく見えるかもしれません。
クリスチャン

私はそのアプローチについて考えましたが、必要なすべての作業(少なくとも各俳優のアニメーションとして2倍必要です)に加えて、芝生の外側から側方シナリオの内側への遷移(例の画像:上の行) 、3列目)、体の半分が内側にあり、残りの半分が外側にある場合、結果はかなり乱雑になります。
Leo

2
マスクやステンシルのような音が必要です。このスレッドには、役立つ情報が含まれています。この拡張機能は、私が話していることを示していますが、必要な機能を正確に実行できるかどうかはわかりません。

1
これは私が探していたように聞こえます!私はいくつかの調査と実験をしなければなりません。なんとか機能している場合は、回答として投稿します。
レオ

回答:


1

@Christianに同意します(ハックとは呼ばないでしょう)。オブジェクトが異なって見えるはずの状態を検出し、それを単に違うように描きます。ゲーム内のすべてのものは、それが「自然」でどのように機能するかの「モデル」である必要はありません。それは私が何度も犯した間違いであり、私にとってそれはマントラのようなものになりました。これを自問してみてください。ブッシュにプレーヤーを単に見た目どおりに描くのではなく、「現実的に」閉塞させることで何が得られますか?これを引用符で囲みました。これがどのように見えるかを想像しようとすると、レイヤードオクルージョンアプローチは実際には劣っているように思えるからです。

@Christianのアプローチに対する懸念が、各フレームをチェックする必要がある小さなものの「潜在的に無制限の」リストの管理にある場合、これは私が何度も犯したもう1つの間違いです。とりあえず「そのままにして」、実際にリストが実際に取得されてからの期間と、実際に問題になるかどうかを定期的に確認することをお勧めします。2つのうちの1つが起こります。問題にならなかったか、その場合、なぜそれを解決しようとしているのですか?またはそれがあり、それを解決するために(最小限の)ソリューションを設計する必要があります。しようとしないでください解くことによってそれをシミュレートし、それを。


0

やっと満足のいく解決策が見つかりました!@Thebluefishのコメントは、マスクを使用して正しい方向を示しました。

アイデアは、2つのパスでキャラクターを描画するシェーダーを使用することです。

  • 最初のパスでは、キャラクターは通常通りレンダリングされますが、完全に茂みの後ろにあります。
  • 2番目のパスでは、olnyが茂みの上にキャラクターの上部を描画するマスクを使用して、もう一度描画します。

これは、雑談者が茂みの中にないときでも行われます。このようにして、ブッシュとの衝突を検出する必要はありません。また、次のような制限ケースでブッシュ内の遷移をスムーズにします。

茂みの外にいるキャラクターの半分は、最初のパスでレンダリングされます。残りの半分は茂みによって完全に塞がれます。

2番目のパスでは、マスクされた文字が再度レンダリングされます。ブッシュの外側のパーツは同じままですが、ブッシュの内側のパーツが上にレンダリングされ、マスクがブッシュの上にあり、ブッシュの内側のように見えます。


-1

芝生にキャラクターがいるかどうかを検出できます。次に、キャラクターの上半分のみを描画します。


この回答はすでに提案されていると思います。回答に追加する詳細がありますか?
MichaelHouse
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.