【Game A Week 0週目(練習)】「すねーく.unity版」

f:id:snoopopo:20210331110452p:plain

  • 作成したゲーム
  • 制作期間(時間)
  • 挑戦できたこと!
  • やる予定だったけどやれなかったこと
  • よくなかったこと→改善方法
  • 良かったこと
  • 最後に(感想)

▼Game A Weekのまとめ(ルール等)▼
GAME A WEEK(2021年6月まで+10本作るまで!) - ゲーム作るためのこと学ぶぶろぐ(’ー’)/チャラン


続きを読む

GAME A WEEKまとめ

作成したゲームの振り返り記事

4週目(2021/4/21~2021/4/27):「猫レンジャーのそうこばん」

www.snoopopo.com

3週目(2021/4/14~2021/4/20):「ドットピクロス」

www.snoopopo.com

2週目(2021/4/8~2021/4/13):「メダカリウム」

www.snoopopo.com

1週目(2021/3/31~2021/4/7):「ちいさな猫太郎」

www.snoopopo.com

0週目*1:すねーく.unity版

www.snoopopo.com

ルール

・水曜12時スタート~火曜24時終了を厳守
・ストア(現在はandroidのみ)の申請までを期間内に行う
・必ずリリースする。
 →期限内にできなかった場合、10本のカウントにいれない。
・作業時間の記録は、机に座って行っている作業のみ集計。
 (例えば散歩している間にアイディア考えたりしてるのは集計しない)
・終了後はプロジェクトにさわらない(GAME A WEEK自体をやめたら触ってもOK)
・水曜~12時に振り返りや改善作業を行い、次回につなげる ←これが一番大事★

なぜルールを決めたいの?
・期間が決まっている方が作業の計画が立てやすい
 →実装したい仕様をいれるかどうかの判断材料にできる
・期間が決まっていないと振り返りで分析しづらい
 →何にxx時間かかっているけどそんなに時間かけれないのか、とかそういう感覚をつかみやすくするため。

必ずゲームに含めないといけないもの

・タイトル画面
・リワード動画
・シーン遷移演出。毎回違う演出にすること!(使いまわしはNG) ←4/21追加

*1:ルールを明確にしてなくて1週間になっていないw練習週

uses-sdk:minSdkVersion 17 cannot be smaller than version 19 declared in library [:UnityAds:]

発生した現象

f:id:snoopopo:20210329135824p:plain

UnityAdsをプロジェクトに初めて導入し、android実機で動作確認するためにandroidビルドをした際に発生。

最低のSdkVersionが17になっているが、UnityAdsのライブラリでは19にしないといけない、という内容

対処方法

最低SDKVersionを19にあげる。

SDKVersionの設定は、 [ PlayerSetting ] の Other Settings 内にある、Minimum API Level で設定できる。

f:id:snoopopo:20210329140426p:plain

3Dオブジェクトを光らせるStandardのEMISSIONが効かないときの対処法

f:id:snoopopo:20210327110432p:plain

StandardのEMISSION

3Dオブジェクトを光らせる方法の1つに、ビルドインシェーダのStandardシェーダのEMISSIONを使う方法がある。 f:id:snoopopo:20210327110711p:plain

スクリプトからStandardのEMISSIONを切り替える方法

   public void SetEmission(bool emission, Color color)
    {
        r = box.GetComponent<MeshRenderer>();

        if (emission)
        {
            r.material.EnableKeyword("_EMISSION");
            r.material.SetColor("_EmissionColor", color);
        } else
        {
            r.material.DisableKeyword("_EMISSION");
        }
    }

上記のように、
一度EnableKeywordで「EMISSION」を有効にする必要にしてから、色を設定する。
EMISSION」を有効にしないと、いくら色をセットしても変わらないので注意!

エディタでは効くのに、android実機で効いていない場合

最初はEMISSIONを無効にしておいて、あとからスクリプトで有効にしたい場合に発生した。 対処方法は、Resouces側に、もともとEMISSIONを有効にしたマテリアルを配置しておくことで対処できる。

f:id:snoopopo:20210327111438p:plain

これは、EMISSION無効状態のマテリアルしかプロジェクトに存在しないと、無効状態のシェーダーしかビルドされないため発生する。
予め有効状態のマテリアルをプロジェクト内に配置すればビルド時に有効状態のシャーダも一緒にビルドされることになるので、問題を解決できる!

参考

kan-kikuchi.hatenablog.com

【Unity】2Dのコライダー

追記:2Dなので、SpriteRendererで主に使っていたが、uGUIでも問題なく使える!

動く物体

Is Trigger にチェックが必要
Rigidbody 2Dコンポーネントをつける必要がある
 →Body Typeは物理演算を使いたいならDynamic。物理演算の影響をうけたくない場合はKinematicでよい。

動かない物体

Is Trigger にチェックは不要
Rigidbody 2Dコンポーネントも不要

衝突したときに呼ばれるメソッド

2D用のコライダーをつけている場合、OnTriggerEnterではなくOnTriggerEnter2Dなので注意!
また、引数もColliderではなく、Collider2D となっている。
OnTriggerEnterをいくら定義しててもよばれなかったよ…

   private void OnTriggerEnter2D(Collider2D other)
    {
        Debug.Log("ぶつかった");
    }

    void OnTriggerStay2D(Collider2D collider)
    {
        Debug.Log("ぶつかってる");
    }

    void OnTriggerExit2D(Collider2D other)
    {
        Debug.Log("ぶつかり終わった");
    }

また、上記メソッドは、衝突し合っている物体どちらのメソッドも呼ばれる。

unityで2Dゲーム作るときにはじめにする設定(CameraとかCanvasとか)

設定したい内容

画像1dot分=座標1 transform#positionの1になるようにする

sprite の設定

f:id:snoopopo:20210319111453p:plain

Pixcels per Unit を 1にする。
MeshTypeFullRectにする。
 →これはSpriteAtlas化したときにごみができたり、画像の向きが勝手に変わってパッキングされてしまうのを防ぐため。

Camera

f:id:snoopopo:20210319110752p:plain

ProjectionOthographic にし、Sizeは基準にしている画面サイズ*1縦の半分にする。

Canvas

f:id:snoopopo:20210324122404p:plain

UI ScaleModeScale with Screen Size にし、
 Reference Resolution に基準にしている画面サイズ*2を設定する
  →この設定で、画面サイズが異なっていても、アスペクト比が同じなら同じように表示されるように自動でスケーリングしてくれる。
 Matchで横幅あわせか縦あわせかを設定することで、アスペクト比が異なる端末にも対応できる。
Render ModeScreen Space Overlay にする。
 →これは常にUIを一番手前にもってくるため

*1:キャプチャでは、320x568にしているので、縦の半分の284になっている

*2:キャプチャでは、320x568にしてる

androidでinpufFieldの文字色が白い時の対処法

入力した文字や「OK」が白くて見にくい…

uguiやtextMeshProのinputFieldを使用した際に、
android実機で入力した文字や「OK」が、白くかなり見にくいという現象になりました。 f:id:snoopopo:20201224111528p:plain
▲かなり見にくいけど、赤線引いたところにうっすら入力した文字が出ています。
これを修正する方法をこの記事では書きます。

【この記事を書いたときの環境】
* Unity 2019.1.0f2 Personal(64bit)

対処法

AndroidManifest.xmlandroid:theme="@style/UnityThemeSelector"の内容を追加する。
追加する箇所はここ↓

 <application
        android:allowBackup="true"
        android:theme="@style/UnityThemeSelector" 
        android:icon="@drawable/app_icon"
        android:label="@string/app_name">

▼ビルドしなおして、確認すると黒文字になります! f:id:snoopopo:20201224111304p:plain