Game制作入門 day3

ブロック崩しの仕上げ

www.youtube.com

ボタンのイベントの処理、ゲームオーバー、ゲームクリア周りの処理を作成。ボタンのイベントが上手く行かなかったのは、GameObjectとして紐つけていたのが、C#スクリプトだったからぽい。GameObjectはヒエラルキーウィンドウに並んでいるのでそこからD&Dしなければならなかった。

VS Codeの補完が思ったより動かなくてJetBrains Riderとかが良い気がしたけどいきなりお金かけるのもな〜ということでもうしばらくはVS Codeで頑張ってみる。

Unityはドキュメントもたくさんあって助かる。補完が効かない場合はクラスリファレンスを当たればとりあえずだいたい分かる。 UnityEngine.SpriteRenderer - Unity スクリプトリファレンス

ブロック崩しのブロックを動的に生成する

ブロック崩しの動画では、ブロックを一つずつオブジェクトとしてシーンに配置していた。これだとかなり配置作業が大変なので、動的に生成することにした。

ブロックをPrefab化し、ゲームのスタート時にブロックを動的に生成する。Blockクラスに対して、動的生成はGameObjectになるので、型周りでやや迷ったがなんとかなった。

画面というかカメラのサイズ感がよくわからず、座標がマジックナンバーになってしまっている。 このあたりはまた別途調査しなければならない。

void Start()
{
    int columns = 10;
    int rows = 2;
    blocks = new GameObject[columns * rows];
    GameObject obj = (GameObject)Resources.Load("Block");
        
    Bounds bounds = obj.GetComponent<SpriteRenderer>().bounds;
    float width = bounds.size.x;
    float height = bounds.size.y;

    for (int i = 0; i < columns; i++)
    {
        for (int j = 0; j < rows; j++)
        {
            GameObject instance = (GameObject)Instantiate(
                obj,
                // アスペクト比や壁の配置などでマジックナンバーを模索した
                new Vector2(-2.65f + width * i, 3.0f + (j * height)),
                Quaternion.identity
            );
            blocks[i + columns * j] = instance;
        }
    }
}

動的に生成したブロック

動的生成だとプレビューに出ないし、またブロックのレイアウトが複雑になってくると管理が難しそうと分かった。おそらくこれはタイルマップで管理するのがいいんじゃないかという気がするが、タイルマップを使う方法が分かってないので調べる必要がある。

Unity ProjectをGithubで管理する

だんだんやれる事というか、やらないといけないことが分かってきて、そろそろ変更管理をしないと大変になりそう、ということでgitで管理することにした。

Githubだと.gitignoreでUnityのテンプレもあるので助かる。Unity Editorのwindowサイズなど、作業してたら頻繁に変更しそうな設定ファイルまでgitに含まれていたのが気になりどころ。しばらく触ってみて必要なさそうなら除外することにする。

Unity Pathway Explore Unity

小テストに合格したので続きに進んでいく。

learn.unity.com

Realtimeって何?とかGame Engineってなに?とか言った話。ゲーム以外でも幅広く使われている事例などを学んだ。Unityでのゲーム制作は完全に趣味だけど、もしかしたら本業なんかにも役立つときが来るのかもしれないな、などと思ったりした。

Game制作入門 day2

2Dゲームキットウォークスルー

昨日途中までやった2Dゲームキットウォークスルーの続きをやる。

learn.unity.com

敵の配置、落下物での攻撃、背景のオブジェクト配置による装飾、キャラクタのテレポートを行った。すべてアセットで用意されていて、配置したりポチポチするだけ。

Unityを触れ慣れるという意味ではとても良い体験だった。ほぼほぼキットに乗っかってるだけなのでこれを使ってゲーム作るって感じだとあんまり学習としては成立しなさそうと感じた。

ブロック崩しの仕上げ

前回のブロック崩しの動画とは中身が違うけど、仕上げ動画を見ながら同様のことをしていってみる。

www.youtube.com

ゲームクリアとゲームオーバー判定までいけた。ボタン処理がうまく動かず時間切れ。

Game制作入門 day1

すでにUnityのインストールやサンプルの動作などなど、実施していることが結構あるが、記録として残すのは今日からということで今日をday1とする。

Unity Pathway

Unityの公式の学習コンテンツとしてPathwayというものがある。Unityを使ったゲームの制作についてStep by stepで学んでいくことができる。いきなりUnity Editorを開いてもマジでなんにもわからないので、ゼロから教えてくれるPathwayをやっていくのは良さそう。

learn.unity.com

まずはUnity Essentialsというコースに着手した。Unityのインストール手順や、Unityのクリエイター達へのインタビューなど基本の基本から少しずつ学べるっぽい。

とりあえず本当に最初の最初、セットアップ部分まで進めた。

ブロック崩しを作る

Youtubeを探すと意外とゲーム制作をしているチャンネルがたくさんある。制作風景を流すものから、ハンズオン的に手順をすべて解説してくれるものまで様々。

今日は2Dゲームのブロック崩しを作る手順を解説してくれている動画に沿って作ってみる。

www.youtube.com

オブジェクトやスクリプトなど、感覚は全然わからないけどとにかく手順に沿って動かした。動いたけどオブジェクトの見た目を変える(テクスチャとか?)方法とかわからなかったので本当に動いただけ。

VS CodeC# with Unityの環境を整える

Unityのスクリプトエディタは、デフォルトはVisual Studioっぽいが、個人的にはVS Codeのほうが好みなので、VS Codeで環境を作った。C#自体はextensionを入れたらいいけど、Unityのコードエディタとして動かすのにちょっと苦労した。

インストールしたものは次。

また、設定でOmniSharpの Use Modern Netをfalseにする必要があるらしいので設定した。コード補完がなかなか動かずガチャガチャやってたら動いたので、これらの条件でうまくいったのかはちょっとわからない。 

dot editorに入門する

piskelというところでお試し制作

www.piskelapp.com

アニメーションは難しいな〜、配色についても難しい。

lospec.comというサイトが制作にあたっては参考になるらしい。けど最初の最初はフリーアセットなんかを使うのがよさそうだ。

lospec.com

Unity Learn 2D ゲーム開発入門

Unity Pathway進めてたら最初の小テストでコケて再チャレンジは24時間後ってことで他のコンテンツを見ていたら、Pathwayとは別に個別で実施できるものがたくさんあるとわかった。

2D ゲーム開発入門というのが良さそうだったので着手。

learn.unity.com

Asset Storeからkitをインストールして使うらしい。2D Game kitというアセット一式を使ってゲームを作る感じで、Unityそのものの使い方に詳しくなれるかでいうと微妙だが、こんなことができるんだなーということが分かるのでその点は良さそう。