20211130のUnityに関する記事は2件です。

UNITYで水面に影を作ってみる

はじめに UNITYの標準アセットのBasic Waterでは水面に影が表示されませんでした 何かやり方が悪いのか結局分からなかったので、透過画像を重ねるというアナログな方法で影を作りました 使用した環境 パソコン:mac mini 2009 Core(TM)2 Duo 2GHz メモリ 8GB Win10 UNITY:2018.4.36f1 準備 ↓前回、UNITYで作るミニチュア風景で作成した風景の影を焼き直したものを使いました (太陽光に合わせてベイクし直したので全体的に暗くなっています) 作業手順 影用の透過画像を作成して水面の上に重ねるという原始的な方法です 影の元画像を作成する ↓影自体は水面を非表示にすると表示されているので、大きさを合わせたCubeで写し取ります ↓ハードコピーを撮ってPNGで保存しましたました GIMPで透過画像の作成 ↓ここからはGIMPでの作業となります しきい値64ぐらいで、影の部分を選択します ↓黒と黄色(水面の色)でグラデーションを描きます 岸から遠くなるほど夕焼けの水面の色となるようにしました ↓[レイヤー]-[レイヤーマスク]-[レイヤーマスクの追加]から、完全不透明(白)のレイヤーマスクを追加します 岸から遠くなる部分を黒にすることで、透過処理させます ↓追加したレイヤーマスクを表示して… ↓影の形が選択されたままの状態で良いので、黒と白でグラデーションを描きます ↓このような表示になります ↓透過グラデーションを反映させるために、[レイヤー]-[レイヤーマスク]-[レイヤーマスクの適用]を実行します 岸から遠い部分が黄色く透けていると思います ↓影以外の部分は、すべて透過させたいので、影の形が選択されている状態で、[選択]-[選択範囲の反転]を実行して、影以外の部分を選択します ↓DELキーを押すと、選択された部分が格子表示となり、透過状態になったことが確認できます ↓[ファイル]-[名前を付けてエクスポート]で、PNGファイルとして書き出します ↓UNITY側では、影の大きさに合わせたCubeに、先ほど書き出したPNGファイルをドラッグし、マテリアルの設定でShaderを[Unlit]-[Transparent]に変更します ↓水面にそれっぽい影が表示できたと思います 余談 ↓[Project Settings]-[Player]-[Other Settings]-[Color Space]はGammaからLinearに変更するとこのような表示になりました (ベイクもやり直さないといけないのかな?) 追記 このシーンを人が歩く動画です よかったら見てください (41)UNITY街並みと歩く人
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Unityにまつわる入社前後の変化

初めに こんにちは! 「CYBIRDエンジニア Advent Calendar 2021」6日目担当を担当します、@cy_ssssです。 5日目は@kappysanさんの「【新卒研修】Device Farmerの導入」でした。 私も新卒なので、研修当時のことを思い出して少し懐かしかったです。 研修が終わってから、まだ二ヶ月ちょっとしか経っていないんですけどね! 簡単な自己紹介と本日の内容 私はゲーム系専門学校卒、新卒一年目のエンジニアです。 学生時代から現在の仕事でもUnityを主に使用しており、せっかくなので入社前後の使い方や意識の違いなどに焦点を当てた記事を書いていこうと思います。 初歩的な内容が多くなるかとは思いますが、基本って大事だよね!という精神でよろしくお願いします。 Unity プロジェクトの共有 ・入社前 学生時代ゲーム制作のほとんどをチーム開発で行なっていたのですが、困るのがプロジェクトの共有。 当時は恐ろしいことに「Gitとか便利なものあるらしいけど、よう分からん」と、変更箇所を覚えておいて手動でメインのプロジェクトに変更をかけていました。 スクリプトの変更をコピペするにも自分の作業箇所を忘れていたりするとかなり悲惨ですし、シーンやプレハブに加えた変更なんてなおのこと……今考えると死ぬほど面倒です。 ・入社後 初めましてGitHub(及びSourceTree)! 一つのリポジトリでデザインなど他の職種の人とも作業の共有が簡単、スクリプトへの変更にプルリク経由でコメントをもらえる、なんて便利なのか! とはいえ扱いに慣れていなくて、ブランチの切り方とかコミットのまとめ方とかでたびたび戸惑う日々を送っています。 早くお友達になりたい。 シーンの扱い ・入社前 一場面一シーンが基本、タイトル・ゲーム本編・リザルトなどで分けて行ったり来たりしていました。 規模が小さいのでそれで問題なかった、とも言います。 ・入社後 常に存在するシーンに汎用的なものが置かれていて、その上でそれぞれのシーンを読んでいる、複数のシーンを同時に存在させられることにまず驚きました。 スマホアプリには共通UIなどがありますし考えてみると納得なのですが、そんなこと出来たのか!と最初は驚くばかり。 三年使ったくらいでは知らない使い方がいくらでもあるものですね。 スクリプトやオブジェクトの取得 ・入社前 Hierarchyにあるものはpublic変数にしてInspectorからアタッチ! 自分についてるコンポーネントはGetComponent<>( )! 探せないものはGameObject.Find( )! ・入社後 これダメなんですね…! 検索系の関数は重いため非推奨とのことで、以前は規模が小さいから問題なかっただけだと思われます…… publicだと外部からのアクセスが容易なため[SerializeField]を活用するように、Zenject(依存性注入)というものも初めて知りまだまだ勉強中です。 ZenjectはGithubに公開されているオープンソースのフレームワークだそうです。 https://github.com/modesttree/Zenject また、元々Zenjectを管理していた方がAssetStoreに公開している、Extenjectというプラグインもあります。 https://assetstore.unity.com/packages/tools/utilities/extenject-dependency-injection-ioc-157735 こちらの方が最新のUnityへの対応もされているそうなので、ご参考までに。 力押しで検索していた過去は反省しようと思いました。 逆にそんなに変わらなかったこと コーディング規約、というのはチームで開発する上で重要なものですが、命名規則やインデント・コメントの入れ方など、おおよその内容は学生時代に習ってきた書き方と相違ありませんでした。 「goto句の使用禁止」もありましたが、初めて知る言葉なので少し検索……好きな所に跳べるというと、音楽記号におけるこれ↓のようなものでしょうか。 説明も読んでみましたが確かにコードを追うのが大変になりそうで、使用禁止というのも頷けます。 今まで習ってきた書き方とほとんど変わらないというのは、やりやすくて有り難かったです。 とはいえ、うっかりコメントを書き忘れたりはするんですけどね…… 研修時の話 Unityにまつわる話だと、入社後の技術研修内でUnityを使ったゲームの制作やUnity1weekへの参加も行いました。 個人制作経験がほとんどなかった上に最短1週間という開発期間の短さは、Unityの経験があっても難しいものでした。 そんな時助けられたのがこちら↓ 研修内で作成した要件定義書の「機能リスト」と「アセットリスト」です。 あらかじめ用意いただいたテンプレートを自分なりに編集したものになります。 最低限欲しいものを最初にリスト化したのですが、書いている中で実現したいゲームの輪郭が見えてきて作業を順序立てしやすかったのが一つ。 その上チェックを付けていくことで作業ペースが把握でき、また素材の準備を忘れずにすごく作業しやすかったので、今後も活用していきたいと思いました。 やることを小分けにリストアップすると作業しやすいことが分かり、普段の業務にも生きています。 最後に 箸休め的な記事でしたがいかがでしたでしょうか? 「CYBIRDエンジニア Advent Calendar 2021」 明日は@kenta_kitagawaさんの「【Laravel】queueとsupervisorについて」です! お楽しみに♪
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む