SHOW Toro TIME

ゲームや技術的なこと、最近の気になることをどんどん書いていくブログです

Unity初心者が作る2Dゲーム冒険記#1

どうもー、小とろです。
最近刺激を求めていろいろなことに挑戦している最中です。
今回はその一つであるUnityを使って2Dゲームを作ってみたので、その内容を書いていこうと思います。

f:id:shotoro:20200801140411p:plain

はじめに

この記事は株式会社富士通システムズウェブテクノロジーが企画する
いのべこ夏休みアドベントカレンダー 2020の2日目の記事です。
本記事の掲載内容は私自身の見解であり、所属する組織を代表するものではありません。

※そこまでたいそうなことは書いてないと思うので、気軽にご覧下さい。

qiita.com

Unityとは

一言でいうと、パソコンで誰でも簡単にかつ無料でゲームを作れるゲームキットになります。 2005年頃からゲームを作るのに特化したソフト(ゲームエンジン)として作られていて、 最近ではゲーム業界だけではなく、自動車産業・医療現場、はたまた
宇宙開発にまでUnityを使っていたりと、かなりの進化を広げています。

ちなみに、開発言語は基本的にC#になります。

『参考記事』 unity.com

www.sejuku.net

今回作ったもの

Unityでは、3Dにも対応していますが、
今回は手早く取り掛かれそうな2Dゲームを対象に作ってみました。

f:id:shotoro:20200728221643g:plain

準備したこと

とりあえず、これだけあればすぐにゲームが作れるので早速インストールしました。

初回起動

Unityを起動すると、プロジェクト作成画面になるので、
2Dの選択とプロジェクト名を記載して作成しました。

f:id:shotoro:20200728193013p:plain

下の画面が出て、準備完了です。

f:id:shotoro:20200728193238p:plain

キャラ素材を手に入れる

UnityのAsset Storeという場所から、ゲームで使える素材(Asset)をダウンロードできるので 今回は無料の素材をダウンロードしました。

手順

起動したUnityのメニューバーからWindow > Asset Storeを選択します。
※ネットワーク環境は必須です。

f:id:shotoro:20200728193420p:plain

以下の画面がAsset Storeになるので、
ここから素材を探していきます。

f:id:shotoro:20200728193637p:plain

カテゴリに2DとFree Assetsを選択します。
これで、無料の2Dゲーム用素材が検索されます。

f:id:shotoro:20200728193824p:plain

今回はこの素材を例にゲームを作っていきました。

f:id:shotoro:20200728194014p:plain

importボタンでインポートしちゃいます。

f:id:shotoro:20200728194103p:plain

インポートが完了すると、Unityの左下にインポートされたフォルダが出てきます。

f:id:shotoro:20200728194228p:plain

ちょっと中身を見てみると、キャラの素材があると思います。

f:id:shotoro:20200728194358p:plain

これでキャラ素材が手に入りました。

キャラを登場させる

次は、キャラをゲームに登場させます。
順を追って説明していきます。

まず以下の画面から始めます。

f:id:shotoro:20200728201837p:plain

狐の素材6つを同時に選択して、ドラッグアンドドロップで配置します。

f:id:shotoro:20200728202146p:plain

アニメーションファイルとして保存する必要があるので、名前を決めて保存します。

f:id:shotoro:20200728202318p:plain

ここまでできれば、狐のキャラがゲーム画面に登場します!
(この時キャラは拡大しています)

f:id:shotoro:20200728202432p:plain

デフォルトだとキャラが小さかったので、キャラのサイズを大きくするようにしました。
左のサイドメニューにキャラオブジェクトがあるので、クリックすると
右のサイドメニューにキャラオブジェクトのステータス情報が出てきます。

f:id:shotoro:20200728203007p:plain

Transformと書かれている部分に、現在のキャラの位置(Position)、角度(Rotation)、大きさ(Scale)が定義が表示されます。
大きくするために、大きさ(Scale)をX=7、Y=7にしました。

f:id:shotoro:20200728203659p:plain

最後に動作確認をするため、
画面中央上部に再生ボタンをクリック!

f:id:shotoro:20200728203833p:plain

キャラが動いて成功です。
もう一度再生ボタンをクリックすると停止します。

キャラを動くようにプログラムする

キャラを登場させることができたので、
次はこのキャラに対して移動プログラムを設定していきました。

まず、キャラがいるフォルダを右クリックしてCreate > C# Scriptをクリック。

f:id:shotoro:20200728212113p:plain

名前は「PlayerScript」とします。

f:id:shotoro:20200728212612p:plain

そして、PlayerScriptをダブルクリックして、エディタを開くと
下の画面のようなプログラムコードが出てきます。

f:id:shotoro:20200728212815p:plain

Unityは基本的にC#なので、中身はほとんどオブジェクト指向型の設計になります。
既にあるメソッドは以下のような処理をしてくれます。

  • Startメソッド…最初の一回のみ呼ばれる初期化メソッド

  • Updateメソッド…1フレーム(1/60秒)毎に呼ばれるメソッド

これらのメソッドを使いつつ、キャラを動かすプログラムを書いていきました。
以下のようにキーボードのキーを押された時の処理を書いていますが、
ほとんどの部分はUnityが独自に持つプロパティやメソッドを使っているのがわかると思います。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerScript : MonoBehaviour
{
    Rigidbody2D rb;
   // Start is called before the first frame update
   void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }
   // Update is called once per frame
    void Update()
    {
        //Aキー or 左矢印キーを押さえている間
        if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))
        {
            rb.position += new Vector2(-7.0f, 0.0f) * Time.deltaTime;
            this.transform.localScale = new Vector3(-7, 7, 1);
        }
      //Dキー or 右矢印キーを押さえている間
        if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow))
        {
            rb.position += new Vector2(7.0f, 0.0f) * Time.deltaTime;
            this.transform.localScale = new Vector3(7, 7, 1);
        }
    }
}

最終的にこのプログラムは、キャラに対してアタッチ(紐付け)しています。

作ったスクリプトファイルをキャラオブジェクトにドラッグアンドドロップすることでアタッチされます。

f:id:shotoro:20200728214906p:plain

最後に、コンポーネントと呼ばれるUnity独自のプログラムをキャラに設定します。

今回当てるコンポーネントは「Rigidbody 2D」です。

・Rigidbody 2D
Rigidbody2Dは、物理挙動を担当するコンポーネントです。
物理エンジンの恩恵を受けられるようになり、重力を簡単にオブジェクトに掛けられたり、力をオブジェクトに加えて動かしたり出来ます。

こちらのブログを見るとイメージがつきやすいかもしれません。

mogi0506.com

「Rigidbody 2D」は、以下のような方法で設定しています。

ゲームオブジェクト(キャラ)を選択し、
右下のAdd Componentボタンを押します。

f:id:shotoro:20200728215220p:plain

小ウィンドで「Rigidbody 2D」を検索して、クリック。

f:id:shotoro:20200728215328p:plain

クリックした後、以下のようなものが追加されます。
Gravity Scaleは一旦0(ゼロ)にしておきました。
(1にすると物理演算が働いて、重力がかかったように下に落ちていきます。)

f:id:shotoro:20200728215452p:plain

ここまで出来たら再生ボタンを押して、ゲームを起動。
キーボードの「Aキー」、「Dキー」を押すとキャラが移動するようになりました!

f:id:shotoro:20200728215746p:plain

まとめ

いかがだったでしょうか?
意外と簡単に作れたのではないでしょうか?
今回はキャラを動かすだけでしたが、もっと工夫することで
ステージを作ったり、敵を倒したり、レベルアップ機能を作ったりなどいろいろできます。
さらには3Dゲームも簡単に作れるので、是非Unityで遊んでみてはどうでしょうか?

Unity初心者が作る2Dゲーム冒険記は、まだまだ続く予定。
次回をお楽しみに。

f:id:shotoro:20200801140842p:plain:w300