【Unity】スマホの初期向きを横向きにする

初期向きを横向きにする

Dafault OrientationをLandscapeLeftかLandscapeRightに変更すれば起動時から向きを横向きにできる。

f:id:Brave345:20200520104812p:plain

ネットだとここをAutoRotationにしてるものが多かったがそれだと最初縦画面になってしまいました。

Dafault OrientationをAutoRotationにしてスクリプトのStart内でLandscapeLeftかLandscapeRightに変更すると最初一瞬だけ縦画面になってしまうので注意

回転できるようにする

あとはスクリプトで回転できるように指定してあげればいい

  void Start()
    {
        Screen.orientation = ScreenOrientation.AutoRotation;
        Screen.autorotateToPortrait = false; 
        Screen.autorotateToLandscapeLeft = true; 
        Screen.autorotateToLandscapeRight = true;
        Screen.autorotateToPortraitUpsideDown = false; 
   }  

【Unity】ShadergraphでGradientがプロパティ化できないので対策案を探してみた

はじめに

ここにもある通りShaderGraphのGradientはプロパティ化出来ないため、グラデーションをマテリアルからいじれないので不便です。

WHERE is the exposed Gradient node property in Shadergraph - Unity Forum

なので何か対策方法がないか調べてみました

案1 複数のLerpを使用する

トライトーンというものを使用します

参考

www.klab.com

メリット

・ Colorノードを使用しているためCustom Dataで色情報の受け渡しが出来る。

・ Colorを変更するだけなので調整が楽

デメリット

・複雑なグラデーションが出せない

案2 グラデーションテクスチャを使う

グラデーションテクスチャは以下のエディタ拡張で作成できます。

Genボタン押してからグラデーションテクスチャを作成できるまで若干ラグあるので注意です

github.com

あとは以下のようにノードをつなげればOKです 左下のSample Texture 2Dノード確認用なので消しても大丈夫です

メリット

・ Lerpと比べて複雑なグラデーションを作成しやすい

・ テクスチャを使用しているため同じような色合いを出したいときにテクスチャを使い回しできる

デメリット

・使用するテクスチャが増えるため容量が増える

・テクスチャにHDRなカラーを持たせることで出来ないので、徐々に発光させるみたいなグラデーションが作れない

複数のグラデーションを格納したテクスチャを使用する場合

こちらのやり方が参考になります

案3 ブーリアンまたはシェーダーバリアントを使用する

以下の記事みたいすれば数種類のグラデーションを切り替えることが出来る

bravememo.hatenablog.com

メリット

・ グラデーションノード使用できるので自由にグラデーションが設定できる

デメリット

・プロパティ側でグラデーションの色合いを変更できない

・処理速度またはコンパイル時間が長くなる

おわりに

どちらの方法にもメリット、デメリットがあるのでケースバイケースでやるのがいいと思います。

【Unity】ShaderGraphのSampler Stateノードについて調べてみた

はじめに

Sampler StateノードはSample Texture 2DノードのInputで指定できるが誰も使用している人を見かけなかったので少し挙動について調べてみました。

環境は Unity 2019.3.0f3

Universal Render Pipeline(テンプレートのプロジェクトです)

UnlitGraph を使用しています。

Sampler Stateノードについて

Sampler StateノードはInputは2つあります

Filter : テクスチャフィルタリングモード

テクスチャマッピングするために、テクスチャ色を決定するために使われる方法(調べたけどよくわからんかった)

Wrap :サンプリングのラップモード

下記の挙動を見ていただくとなんとなくわかると思います。

挙動

サンプリングのラップモードごと挙動を紹介します Tilingを変更するとわかりやすいです

Repeat

デフォルトで設定されてるやつ

f:id:Brave345:20200518122900p:plain

Clamp

タイリングされず元の画像から縮小だけされている

f:id:Brave345:20200518122912p:plain

Mirror

名前の通りタイリングがミラーしながらしている

f:id:Brave345:20200518122922p:plain

MirrorOnce

マイナスにタイリングしても反対向きにならないしタイリングもされない。

f:id:Brave345:20200518122932p:plain

使い道

以下のようなグラデーションテクスチャを使用した際、Sampler Stateの状態がデフォルトだと左端に謎の線が出来てしまいます。

f:id:Brave345:20200518122945p:plain

正しい使い方はわからないけど、TypeをPointにすると左端の謎の線が消えます。もしくはWrapを変更しても直ります。

f:id:Brave345:20200518122954p:plain

おわりに

使い方を発見したら随時追加していきます。

参考

docs.unity3d.com

【Unity】ShaderGraphでLoadingっぽいアイコンを作る

はじめに

ShaderGraphでLoadingっぽいアイコンを作っていきます。

環境は Unity 2019.3.0f3

Universal Render Pipeline(テンプレートのプロジェクトです)

UnlitGraph を使用しています。

ノード作成

アイコン作成

最初にRectangleノードで4つの細長い矩形を作成してそれをRotateのノードで角度調整をして下記の上下左右に交差している矩形を作成します。

円形上の細い線は大きさの異なるEllipseノードを2つ作成し、それをSubtractノードで減算して作成します。

あとは円形上の細い線からSubtractノードで上下左右に交差している矩形を減算すれば完成です f:id:Brave345:20200511174500j:plain

色の回転部分

先ず最初にPolar CoordinatesノードからY成分をを取り出しその値に0.5加算させて値を0~1の間にします。

それをTimeから減算し、Fractionノードで0~1を繰り返すことによって、ずっと色を回転させることができます。

f:id:Brave345:20200511174508j:plain

色の設定

ここではアイコンと回転色を合成しています。 たいしたことはしていないのでここは説明なしで

f:id:Brave345:20200511174505j:plain

完成

f:id:Brave345:20200511174600g:plain シーン上に試しに置いて色をつけてみたやつ f:id:Brave345:20200511174607g:plain

今回作成したシェーダーはBoothで公開しています braveshop.booth.pm

1週間ゲームジャム お題「密」に参加しました。

はじめに

今回作成したゲームです。

unityroom.com

よければ遊んでみてください

作成過程

あんまり記憶にないためかなり雑です

1日目 企画 物理を使用したなにかをしたいと思い今のゲームに至る

2,3日目  ゲーム部分の実装できるかの検証,プロトタイプの制作

3,4,5日目  グラフィック関連の制作

5日目 ステージの制作

6日目 ゲーム遷移の制作、音入れ

7日目 新モードの追加、ランキング機能追加

だいたいこんな感じです。

音について

音はきれいなサイバー空間を演出したかったためきれいに響く音と、電子音っぽいもので構成されています。

一部いい感じの音が見つからなかったのでAudio mixerのSFX Reverbを使用していい感じに響く音にしました。

ですがWebglだとAudio mixerのエフェクトが反映されないため、Unityでエフェクトかけた状態の音を録音しそれを再生するというごり押し戦法をとることで全体的に響いている感じの音を実現していました。

作成したグラフィック関連について

グラフィックはサイバー感のある空間にし、(これしか自分にはできない)、色は緑寄りの青色で統一するようにしました。

ポストエフェクト

透き通った空間にしたいと思い、いつもはVignetteとか使用してますが、今回はBloomのみ使用しました。

UIにもゲーム背景になじませるためにBloomをかけています。

土台部分と入れ箱部分

f:id:Brave345:20200511141045p:plain

こちらの記事の虹色部分の色を変更して回転速度を調整したマテリアルをボックスに適用しています。

bravememo.hatenablog.com

生成する球やボックス

リムライトに六角形の線を加えたシェーダーを使用しました f:id:Brave345:20200511141130p:plain

線の部分はこちらを参考に作成しました

http://rngtm.hatenablog.com/entry/2018/12/16/171133rngtm.hatenablog.com

UI 演出関連

TextmeshProをかなり多用しました。

今回のゲーム制作で一番のお気に入りやつ。何回も見ちゃう

f:id:Brave345:20200511141204p:plain

フォントの設定はこんな感じです。

Faceを黒にしてOutllineで発光させたい色を指定していい感じにサイバー感のある文字を表現しています。

f:id:Brave345:20200511141218p:plain

アニメーションは言語化が難しいので実際のキーフレームを載せときます

f:id:Brave345:20200511141253g:plain

基本的にどの演出も移動とスケールをアニメーションさせています。

開発中に出た問題点

・容器のモデルを作成してそのMeshColliderで当たり判定を取ろうとしたが当たり判定が箱が閉じてるような当たり判定で使用できなかった。

→ 一つのオブジェクトに複数のBoxColliderをつけて対応した。

・右側のボックス内で球を生成するときほぼ同時に生成するため球同士がめり込んで球がボックス内から出でしまう。

→ 生成フレームの間隔をあけたり,Largeの次にLargeを生成しないようにしました。

しかしそれでもボックス内から出でしまうことがあるので、そうした場合はゲームオーバーにしないようにして,プレイヤー側の不利益にならないような仕様にしました。

反省点

今回はゲームバランスの調整をやらかしました。

最初の調整では少しでも左右のバランスが狂ってたら傾くようにしてたのですが、それを運ゲーと感じる方がかなりいました。

自分がプレイして時は内部パラメータを理解してるため割と簡単にクリアできてしまったためこれでええやろーと思ったのが失態でした。プレイヤー目線でプレイができてませんでした。ほんとよくない。

おわり

個人的には前回より力いれて開発しましたが結果として総合点が前より低いという悔しい結果になりました。

もし次回参加できそうなら今までよりも面白さ重視のゲームを作っていきたいです。

あと毎回ランキング上位が2Dばかりなのを見ると3Dで上位に入り込むのはなかなか厳しいなぁと感じました。

よほどのアイディアに優れてるか、絵作り最強レベルじゃないと中々厳しくないすか?

それでも自分は3Dで頑張っていくつもりですけどね