おもちゃバコ

主に趣味について

Unity: 1時間で2Dゲームの基礎を作る

こんにちは

今回はUnityを使用して1時間(ぐらい)で2Dゲームを作るための備忘録です.
我流かつ適当なので参考になるかは...


開発環境

Unity 2020.3.25.f1
Windows 10 Home 21H2


プロジェクト設定

ある意味2Dも3Dの一部なので,プロジェクト設定は3Dで大丈夫です(暴論).
(2Dでも大丈夫だと思いますが,今回は3Dで行きます.)
f:id:lambda410:20211229152028p:plain


アセットを用意

今回はAsset Storeにある下記アセットを使用します.

ブラウザからUnity Asset StoreにアクセスしてUnityへダウンロードしましょう.
(importはUnity上のPackage Managerから行います.)

assetstore.unity.com


Tile Paletteの起動

Window>2D>Tile Paletteを起動します.
f:id:lambda410:20211229152449p:plain

Tile Paletteが表示されない人はPackage ManagerからTile Palette Editorをインストールします.
(上の画像の赤線をクリックしてインストール)
f:id:lambda410:20211229152555p:plain


Tile Palette設定

Tile Paletteを開いたらCreate New Paletteします.
設定はデフォルトのままで大丈夫だと思います.
f:id:lambda410:20211229153357p:plain

作成したらステージの基となるSpriteのPixels Per Unitを変更します.
今回は16*16のSpriteなので数値は16でオッケー(?)です.
f:id:lambda410:20211229153630p:plain

次に変更したSpriteをドラッグアンドドロップします.
f:id:lambda410:20211229154101p:plain

あとはTile Paletteの筆ボタンを選択して,画面上にステージをお絵描きするだけです.
(蛇足ですが,UnityのSceneの2Dボタンをクリックすると平面になります.)
f:id:lambda410:20211229154212p:plain


Playerを作成

ゲームの主人公を作成します.

HierarchyからCreate EmptyしてPlayerと名付けてPrefab化します.

Add Componentから
1. Sprite Renderer
2. Animation
3. Animator
4. Script
5. Rigidbody2D
6. Circle Collider2D
をアタッチ.
f:id:lambda410:20211229154743p:plain

Playerの設定

  1. Animator
    Animator ControllerをPlayer用に作成してセット.
    f:id:lambda410:20211229154847p:plain
  2. RigitBody2D
    f:id:lambda410:20211229154948p:plain
  3. Tag
    なんとなくPlayerに変更したけど,今回は意味ないです.

Playerのアニメーション

待機と歩きのアニメーションを作成します.

Pixels Per Unitを32(?)に設定してSceneにドラッグアンドドロップしてアニメーションを保存します.
(画像はRunの場合です.)
f:id:lambda410:20211229155254p:plain

Animator設定

Player用に作成したAnimator Controllerを開きます.

ParameterはInt型にしてStateと命名しました.

Stateは画像のように作成して,矢印も設定します.
このとき,Has Exit Timeのチェックを外し,ConditionにStateを設定します.
Idle->WalkはState==0, Walk->IdleはState==1にしました.
f:id:lambda410:20211229155441p:plain
f:id:lambda410:20211229155551p:plain

スクリプト

こんな感じでスクリプトを書きました.

NULLになりそうな箇所はASSERTするのがデキるプログラマ(かもしれない).


Scene設定

  1. MainCamera
    2DゲームにしたいのでProjectionをOrthographicにします.
    また,いい感じに範囲を設定します.
  2. Grid/TileMap
    TileMap Collider 2Dを設定します.
    ステージの当たり判定ですね.

実行

矢印で移動できるはずです.
(何か忘れてるかもしれない...)
f:id:lambda410:20211229161746g:plain


まとめ

途中でクソ雑にまとめてしまいました...
ごめんなさい.