スポンサーリンク

UnityでポケモンGoもどきを作りたい(2)ルーレットアプリを作成してNetlifyで公開

2019年8月17日

前回はWindows10にUnity 2019.2.0f1をインストールしました。

いきなりポケモンGoもどきのゲームを作成するのはハードルが高いので、まずは以下の本の『ルーレットゲーム』を写経してみたいと思います。以下の本は、Unity初めての人に非常にお勧めです。

スポンサーリンク

開発環境

Windows 10 Pro 1803
Unity Hub 2.1.0
Unity 2019.2.0f1

Unityのインストール方法についてはこちらに記載させていただきました。

どんなゲームを作ろうとしているのか

画面をタップするとルーレットがまわり、自然に減速して止まる。止まったところで大吉か吉か判定というごく簡単なゲームとします。

ゲームを作る流れ

Unityの教科書によると、Unityでゲームを作る流れは、以下のように考えるとよいそうです。

  1. 画面上のオブジェクト(今回は、『ルーレット』と『針』)をすべて書き出す
  2. オブジェクト(今回は、『ルーレット』)を動かすためのコントローラスクリプトを決める
  3. オブジェクトを自動生成するためのジェネレータスクリプトを決める(今回は不要)
  4. UIを更新するための監督スクリプトを用意する(今回は不要)
  5. スクリプトを作る流れを考える

その後、以下のように実装していくそうです。

  1. プロジェクトの作成
  2. オブジェクトの配置
  3. スクリプトの作成
  4. スクリプトのアタッチ

新規Unityプロジェクトの作成

UnityHubを起動し、左上の『プロジェクト』をクリックし、画面右上の『新規作成』をクリックし、『 2019.2.0f1 』をクリック。

2D を選択し、プロジェクト名は『Roulette』として、作成 をクリックします。

しばらく待った後、

以下のようなUnityの画面がやっと出てきました。

プロジェクトに素材を追加

Unityの教科書のサポートページを参考に、ルーレットの画像(560×560 pxくらいの大きさ)と、針の画像 (58×81 pxくらいの大きさ) をPowerPointなどを用いて作成し、pngファイルで保存します。

白い部分を透明にしたい(透過pngファイルにしたい)ので、こちらのサイトを利用しました。(←このサイトすごく便利です!)

以下の2つの画像を作成しました。

roulette.png

needle.png

この2つの画像を、Unityの『プロジェクトタブ』にドラッグ&ドロップします。

以下のようになります。

WEBアプリ用に設定する

まずは、WEBで公開したいと考えています。(ファイルが重くなったらAndroidアプリにしようかと考えています。)

File > Build Settings をクリック。

WebGL を選択状態にしたのち、画面左下のPlayer Settings… をクリックし、

Resolution and Presentation をクリックしてひろげて、Default Canvas widthを720に変更し、
Default Canvas Heightを1080に変更します。
その後、このウィンドウを閉じます。

Switch Platform をクリックして、少し待ったのち、Build Settingsのウィンドウを閉じます。

画面サイズの設定

Gameタブを選択し、Aspectのドロップダウンリストを開き、+ を押して、720 x 1080 として、OK をクリックします。

シーンを保存

ProjectタブのScenesフォルダをダブルクリックして開き、

SampleScene の名前を、GameScene に変更します。

Ctrl + S で保存しておきます。

シーンにオブジェクトを配置する

ProjectタブのAssetsの画面から、ルーレットの画像を、Sceneタブ(GameタブからSceneタブにしておきます)にドラッグ&ドロップします。
(ここで、縦長の画面なので、ついでに、SceneタブとGameタブを横並びにしておきました。)

すると、以下のようになります。画面右側の『Inspectorタブ』のTransformのところのPositonを0,0,0 にしておきます。

次に、針の画像をSceneタブにドラッグ&ドロップして、位置を図のように調整します。

次に、背景の色を青から白に変更します。画面左側の『Hierarchyタブ』の、Main Camera をクリックしたのち、画面右側の『Inspectorタブ』の Camera の Background の右横の色をクリックします。

Colorウィンドウが出てくるので、下の方のHex Colorを、FFFFFF (Fを6個)に変更します。

ルーレットのスクリプトを作成する

『ルーレットをクリックしたら、ルーレットが回り出すプログラム』を作成します。

画面左下の『Projectタブ』の中を右クリックすると、以下のような画面が出てくるので、『Create』>『C# Script』の順にクリックします。

NewBehaviourScriptという名前のファイルが作成されるので、名前をRouletteControllerに変更します。

このRouletteControllerをダブルクリックすると、VisualStudioが起動します。

以下のような画面になります。サインインしてもよいですが、面倒なので、今回は『後で行う』をクリックしました。

RouletteControllerが開かれるので、以下のように変更します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RouletteCOntroller : MonoBehaviour
{   
    float rotSpeed = 0; // 回転速度

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        // マウスが押されたら回転速度を設定する
        if(Input.GetMouseButtonDown(0))
        {
            this.rotSpeed = 10;
        }

        // 回転速度分、ルーレットを回転させる
        transform.Rotate(0, 0, this.rotSpeed);
    }
}

これだけではルーレットをクリックしてもルーレットは動きません。RouletteControllerをrouletteオブジェクトに『アタッチ』する必要があります。

スクリプトをルーレットに『アタッチ』する

『Projectタブ』内のRouletteControllerを、『Hierarchyタブ』内のrouletteオブジェクトにドラッグ&ドロップします。
(この操作を、RouletteControllerをrouletteオブジェクトに『アタッチする』と呼びます。)

なんかエラーが出てアタッチできませんでした。

VisualStudioで見てみると、5行目の、RouletteControllerと書くべきところを、
ROuletteController と、記載していたのが原因のようです。訂正して保存(Ctrl + S)したのち、再度、アタッチします。

今度は、rouletteオブジェクトを選択すると、画面右側の『Inspectorタブ』にRouletteController(Script)と表示されるので、ちゃんとアタッチできたようです。

画面真ん中上の『再生』ボタンをクリックし、その後、『Gameタブ』をクリックすると、ルーレットが回転します。

ゲームっぽくなってきました。もう一度『再生ボタン』を押すと、画面が止まります。

ルーレットの回転が止まるようにする

RouletteControllerを編集して、ルーレットが減速して止まるようにします。

// ルーレットを減速させる(1フレームごとに、スピードを0.96倍にする。)
this.rotSpeed *= 0.96f;

再生ボタンをおして、Gemeタブのルーレットをクリックすると、少し動いて、止まるようになりました。

WebGLで書き出す

このゲームをインターネットで公開してみます。
File > Build And Run をクリック

フォルダ名はなんでもよいですが、今回は、1/ というフォルダを作成し、1/ を選択して、『フォルダーの選択』をクリックし、その後、Enterを押しました。
(参考: https://blog.naichilab.com/entry/2017/04/29/125527

だいぶ時間がかかりますが、他のことをしながら待ちます

なんかすごく大きくなってしまいましたが、なんとかブラウザ上で動きました。

Netlifyにアップロード(デプロイ?)

https://www.netlify.com/にログインして、1/ フォルダ内のものをすべてアップロードします。

アカウントを新しく作成してもよいですし、GitHubアカウントを持っていれば、それでログインしてもよいです。

ログイン後に、一番下へ行きます。

先ほどの、1/ フォルダを右クリック > 送る > Zip(圧縮)フォルダー をクリックして、ZIPファイルを作成します。

出来上がった1.zip を、先ほどのNetlifyの
「 Want to deploy a new site without connecting to Git?
Drag and drop your site folder here 」
にドラッグ&ドロップします。

すると、すぐに、以下のような画面になります。

画面がでかすぎですが、公開できました!

https://happy-curran-69ea53.netlify.com/

次回は、このアプリをVue.jsを用いて、PWA(Progressive Web App)化して、オフラインでも遊べるようにしたいと思います。

ソースコードとDEMOサイト

ソースコード
https://github.com/adash333/unity-roulette

DEMOサイト
https://happy-curran-69ea53.netlify.com/

参考:
https://www.cg-method.com/entry/unity-gitignore-setting/  (UnityをGit管理するときの.gitignoreファイル)

参考文献

Unityやるなら、まずはこの本が絶対にお勧めです。

UnityNetlify,Unity,WebGL

Posted by twosquirrel