『東京パソコンクラブ』でアイドルとUnityを学ぶ ② アクションゲーム

スポンサーリンク
スポンサーリンク

アクションゲームを作成中

東京パソコンクラブ~プログラミング女子のゼロからゲーム作り~:BSテレ東
BSテレ東「東京パソコンクラブ~プログラミング女子のゼロからゲーム作り~」乃木坂46のメンバー3人がゼロからゲームプログラミングを学び、オリジナルゲームを作ることを目標に汗をかく!プログラミングドキュメンタリー番組です。
https://twitter.com/nogi_paso
TVer - 無料で動画見放題
TVer(ティーバー)へ、ようこそ。TVerにあるテレビ番組はすべて無料!最新話から過去人気番組まで見放題!

引き続きやってこー。

スポンサーリンク

スプライトを作成

番組では講師の方がゲーム用の画像を用意してくれて、それとオブジェクトを置き換えていっていた。自分は持っていないし、講師の方のTwitterを見たけど公開されてる感じではなかったので用意しないといけない。ということで、とりまBlockとPlayerの画像を突貫で作った。png形式で大きさが分からんかったので48×48(後で分かるが番組基準だと32×32だった)、Playerの方は周りは透過させてるはず。

で、ProjectのAssetsフォルダを選択して、右クリック、Import New Asset…で画像を選択するとエディタに取り込まれる。

スポンサーリンク

オブジェクトの置き換え

HierarchyのBlockを選択、Inspector内のSprite Renderer、Spriteの所にさっき読み込んだBlockの画像をドラッグすると設定される。Playerも同様。Colorは白に戻した。

スポンサーリンク

当たり判定のリセット

現在の状態だと当たり判定が画像に対して過剰に設定されてる。例えば今の状態で実行させるとブロックとプレイヤーの間に空間ができる。なのでそれを改善する。HierarchyのPlayerをクリックして、InspectorのCircle Cllider 2Dのタイトル右端にある”…”の中にResetてあるのでそれをクリックするとシーン内緑線で表現されてる当たり判定が画像にフィットした。Blockも同様に。あと、ゲーム画面上部のFree Aspectを16:9に変更した。

スポンサーリンク

プレハブ化を使って足場を作る

ブロックをコピーするために、色々な情報が入ったまま部品として扱えるようにすることをプレハブ化というらしい。HierarchyのBlockをAssetsにドラッグする。で、それをAssetsからシーンにドラッグすると新たに表示された!おーすごい~。

ドラッグを繰り返して足場を作るわけだけど、整列させるのが大変ということで、シーンの後ろに表示されているグリッドに合わせるようにできる。でも番組と表示が違う?エディタのバージョンが違うからかな…。

おそらくこの磁石マークが付いてるやつだと思うんだけど、グレーアウトしてしまっている。ツールチッップには”Toggle Grid snapping on and off. Available when you set tool handle rotation to global.”てなってる。いろいろ試したところ、さっきの画像の左から2番目をglobalにすると選択できるようになった。意味はわかりません。そしたら磁石付きのグリッドマークの右側の下三角をクリックして、Grid sizeをブロックのサイズの半分の0.24にする(番組だと画像サイズが0.32でグリッドサイズが0.16)。そうするといい感じに整列できるようになった。

スポンサーリンク

キャラクターが動くようにプログラム

オブジェクトのRigidbodyにアクセスしてプログラムしていく。HierarchyのPlayerを選択、InspectorのAdd ComponentでNew Scriptを選ぶ。名前をPlayerに変更する。Script行の右側のPlayerって表示されてるところをダブルクリックすると、番組だとエディタが開く。これはなんだろう、Visual Studioっぽいかな?番組がこのために用意したのかな~。自分も入れてみる。

無料の開発者ソフトウェアとサービス - Visual Studio
無料プラン: Visual Studio Community、Visual Studio Code、VSTS、Dev Essentials。

無償版って書いてあったけど無料なのかな?たぶん。あとおそらくUnityと連携して開発するような設定をしているっぽいかなぁ。うーん、そのやり方がわからん。……もうVisual Studio Codeでいいかな…。そっちで開いて、言われるがままC#の拡張入れた。なんとかなるだろ。なんないかな?そしたらコードを書いてく。

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

public class Player : MonoBehaviour
{
    private Rigidbody2D rigidbody2d;

    // Start is called before the first frame update
    void Start()
    {
        rigidbody2d = GetComponent();

    }

    // Update is called once per frame
    void Update()
    {
        rigidbody2d.velocity = new Vector2(1, rigidbody2d.velocity.y);
    }
}

startは最初の一回だけ呼ばれて、updateは60fpsでループして呼ばれるらしい。Arduinoみたいですね。

スポンサーリンク

Unity上で動くか確認

コードを上書き保存したところでUnityに戻り、再生ボタンを押す。

おお~動いた!今回はここまで~。

コメント

タイトルとURLをコピーしました