カメラの描写についてなんですが
あつ森の画面みたいに
マップがX軸を中心とした
筒状のように見える描写ってどうすれば可能でしょうか...?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
もしシーン上のオブジェクトはそのままで、カメラ側の設定やイメージエフェクトだけで歪ませることができれば便利でしょうし、オブジェクト側のマテリアルに依存せず適用できて好都合だろうと思います。ですが、おそらくこういった非線形の変換はKapustinさんのご指摘のように困難だろうと予想されますね。
検索してみたところ、オブジェクトのマテリアルに手を加えてもいいのでしたら、いくつか参考になりそうな例が出てきました。
アセットストアではCurved Worldなんてものがありました。私は購入していないため実際のところどのような使い勝手なのかは不明ですが、デモムービーやアセット触ってみたシリーズ:ゆがんだ世界の表現!「Curved World」 – Unity公式 Asset Portalのような紹介記事から想像しますに、かなり複雑な変形にも対応可能のようです。
Unity Technologiesから出ているサンプルプロジェクトのEndless Runner - Sample Game(GitHub - Unity-Technologies/EndlessRunnerSampleGame: Repository for the Endless Runner Game Sample (Trash Dash)からも入手可能のようです)にもシーン上のオブジェクトを曲げる表現が含まれており(紹介記事:【Unity】アプリ内課金やAssetBundle、ランキングの例を含むサンプルゲーム、Endless Runner Sample Game - テラシュールブログ)、実際に形状を曲げる部分のコードはCurvedCode.cgincに記述されていて非常にシンプルです。これなら簡単に組み込めるんじゃないでしょうか?
サーフェイスシェーダーでの実装例としてはAnimal Crossing Curved World Shader | Alastair Aitchisonなんて記事が見つかりました。クリップ空間上で変形しているEndless Runner - Sample Gameに対して、ワールド空間上で変形してオブジェクト座標に戻しているという違いはありますが(おそらくVertex Modifierではオブジェクト座標を返さなければならないという都合上の問題かと思います)、カメラからの奥行きの2乗に比例して頂点座標をずらすというアプローチは同様のようです。
また、Shader Graphでの実装例としてAnimal Crossing’s World Bending Effect | Unity Tutorialのムービーがありました。前後方向にたわませるだけでなく左右方向にもたわませて球体のように見せかけたり、遠くのオブジェクトのポッピング...急にオブジェクトが出現したり消えたりする現象への対処法なども解説されていて参考になりそうです。
投稿2020/06/08 11:02
総合スコア10811
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
残念ながらカメラ設定やシェーダ等で実現するのは難しいと思います。
マップが小さければ、円筒状の地形を作るのが手っ取り早いかと思います。
平面マップで作り込みを行い、それを円筒状に変換する仕組みを作るというアイディアもあります。
https://forum.unity.com/threads/any-way-to-use-terrain-inside-a-giant-cylinder.266429/
また、円筒の円周を超えてしまうほどの広大なマップが必要になる場合は、プレイヤーが移動する毎に(どの位置に何が置かれているか等の情報を元に)動的に地形を生成していく方法が良いかと思います。
いずれにしても、それなりの仕組みが必要になってくるかなと思われます。
投稿2020/06/07 16:28
総合スコア1186
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。