コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity 入門】【チュートリアル】ブロック崩しを作る 1. 壁、パドル、ボールの作成

目次

はじめに

今回は、プロジェクトの準備と、
壁、パドル、ボールの作成を行っていきます

プロジェクトの作成

最初に、ブロック崩し用の Unity プロジェクトを準備します

f:id:baba_s:20180116143110p:plain

Unity を起動して上記の画面が表示されたら、「New」を選択します

f:id:baba_s:20180116143118p:plain

「Project name」に「Tutorial」と入力します
次に「Location」の「…」を押して、プロジェクトの保存場所を選択します
そして、「3D」をチェックして、「Create project」ボタンを押します

これで、「Tutorial」という名前で
3Dのゲームを開発するためのプロジェクトの準備が完了しました

エディタのレイアウトの変更

次は作業をしやすくするために Unity エディタのレイアウトを変更します

f:id:baba_s:20171207203153p:plain

エディタの右上のボタンを押して、「2 by 3」を選択します

f:id:baba_s:20171207203536p:plain

そして、「Project」と書かれているタブの右側にある三本線のアイコンを押して、
「One Column Layout」を選択します

f:id:baba_s:20171207203718p:plain

これでレイアウトの変更が完了しました

壁の作成

まずは、壁を配置していきます

f:id:baba_s:20180116143144p:plain

Unity メニューの「GameObject>3D Object>Cube」を選択します

f:id:baba_s:20180116143152p:plain

これで、箱がシーンに作成されます

f:id:baba_s:20180116143201p:plain

作成した「Cube」を選択して、「Scale」(大きさ)の「X」に「20」と入力します

f:id:baba_s:20180116143209p:plain

すると、箱が横長になり、壁を1つ作成することができました

f:id:baba_s:20180116143222p:plain

さらに、この箱を複製して残りの3つの壁も作成していきます
「Cube」を選択した状態で Ctrl + D を3回押します

※ Ctrl + D を押すとオブジェクトを複製することができます

f:id:baba_s:20180116143229p:plain

すると、「Cube」が3つ複製されました
複製した直後は、すべての「Cube」が重なってしまっているので
それぞれの壁を適切な位置に配置していきます

f:id:baba_s:20180116160145p:plain

「Cube (1)」を選択して、パラメータを下記のように設定します

  • 「Position」(位置)の入力欄に左から順に「-10」「0」「15」と入力
  • 「Scale」(大きさ)の入力欄に左から順に「1」「1」「30」と入力

f:id:baba_s:20180116160154p:plain

「Cube (2)」を選択して、パラメータを下記のように設定します

  • 「Position」(位置)の入力欄に左から順に「10」「0」「15」と入力
  • 「Scale」(大きさ)の入力欄に左から順に「1」「1」「30」と入力

f:id:baba_s:20180116160206p:plain

「Cube (3)」を選択して、パラメータを下記のように設定します

  • 「Position」(位置)の入力欄に左から順に「0」「0」「30」と入力
  • 「Scale」(大きさ)の入力欄に左から順に「20」「1」「1」と入力

f:id:baba_s:20180116143238p:plain

これで、それぞれの壁の位置の設定が完了しましたが、
Scene ビューを確認してみても、壁が正しい位置に配置されているのかわからないので、
Scene ビューのカメラの位置を調整します

※ Scene ビューはゲームのシーンを確認するための画面です

f:id:baba_s:20180116160447p:plain

Scene ビューの右上の緑のアイコンをクリックします

f:id:baba_s:20180116143302p:plain

すると、Scene ビューのカメラが見下ろすような視点になるので
あとは、マウスホイールを押しながら画面をドラッグしたり、
マウスホイールを回して画面を拡大縮小して
壁が画面内に表示されるように調整していきます

f:id:baba_s:20180116143310p:plain

これで、壁が正しい位置に配置されていることが確認できます

カメラの位置の調整

f:id:baba_s:20180116143614p:plain

Scene ビューのカメラの調整は完了しましたが、
まだ Game ビューのカメラの調整が終わっていないので
Game ビューのカメラの位置を調整していきます

※ Game ビューは実際のゲームの画面です

f:id:baba_s:20180116143623p:plain

「Main Camera」を選択して、パラメータを下記のように設定します

  • 「Position」(位置)の入力欄に左から順に「0」「30」「15」と入力
  • 「Rotation」(回転)の入力欄に左から順に「90」「0」「0」と入力

f:id:baba_s:20180116143631p:plain

これで、ゲーム画面内に壁が表示されるようになりました

パドルの作成

次は、ボールを跳ね返すためのパドルを作成していきます

f:id:baba_s:20180116143144p:plain

Unity メニューの「GameObject>3D Object>Cube」を選択します

f:id:baba_s:20180116144217p:plain

すると「Cube (4)」という名前のオブジェクトが作成されます
このままだと名前がわかりづらいので、「Paddle」という名前に変更します

f:id:baba_s:20180116144228p:plain

「Cube (4)」を選択した状態で「F2」を押して、
「Paddle」と入力して Enter を押します

※ F2 を押すとオブジェクトの名前を変更することができます

f:id:baba_s:20180116144237p:plain

そして、「Paddle」を選択して、パラメータを下記のように設定します

  • 「Position」(位置)の入力欄に左から順に「0」「0」「5」と入力
  • 「Scale」(大きさ)の入力欄に左から順に「5」「1」「1」と入力

f:id:baba_s:20180116144247p:plain

これで、パドルの作成が完了しました

ボールの作成

さらに、ボールを作成していきます

f:id:baba_s:20180116144552p:plain

Unity メニューの「GameObject>3D Object>Sphere」を選択します

f:id:baba_s:20180116144604p:plain

作成した「Sphere」を選択して、パラメータを下記のように設定します

  • 「Position」(位置)の入力欄に左から順に「0」「0」「15」と入力

f:id:baba_s:20180116144620p:plain

これで、ボールの作成が完了しました

ボールに物理特性を与える

パドルとボールの作成が完了しましたが、
このままでは動かないので、まずはボールに物理特性を与えていきます

f:id:baba_s:20180116144905p:plain

「Sphere」を選択した状態で

f:id:baba_s:20180116144915p:plain

「Add Component」ボタンを押して、入力欄に「Rigidbody」と入力して、
表示された「Rigidbody」を選択します

f:id:baba_s:20180116145125p:plain

これで、「Sphere」に「Rigidbody」という名前の機能を付与することができました
「Ridigbody」は、物理特性を制御するための機能です

f:id:baba_s:20180116145134p:plain

そして、「Ridigbody」のパラメータを上記のスクリーンショットのように設定します

ボールに初速を与える

ボールに「Ridigbody」を付与することで、物理特性を与えることができたため、
「Ridigbody」を使用してボールを動かすためのプログラムを作成していきます

f:id:baba_s:20180116145500p:plain

Unity メニューの「Assets>Create>C# Script」を選択します

f:id:baba_s:20180116145510p:plain

すると、プログラムファイルが作成できるので、

f:id:baba_s:20180116150305p:plain

「BallController」という名前に変更します

f:id:baba_s:20180116150315p:plain

これで、「BallController」という名前のプログラムファイルが作成できたので
ボールを動かすためのプログラムを記述していきます

f:id:baba_s:20180116145534p:plain

「BallController」をダブルクリックすると、
お使いの環境に合わせて Visual Studio や MonoDevelop などの、
プログラムを書くためのエディタが起動するので、
下記のプログラムをコピーして貼り付けます

using UnityEngine;

public class BallController : MonoBehaviour
{
    public float speed = 10;

    private void Start()
    {
        var force = ( transform.forward + transform.right ) * speed;
        GetComponent<Rigidbody>().AddForce( force, ForceMode.VelocityChange );
    }
}

今回はプログラムの解説は割愛させていただきます
プログラムを貼り付けたら、Ctrl + S を押すなどしてプログラムファイルを保存します

f:id:baba_s:20180116150231p:plain

Unity に戻り、「BallController」を「Sphere」にドラッグします

f:id:baba_s:20180116150242p:plain

これで、「Sphere」に「BallController」を反映することができます

f:id:baba_s:20180116150529p:plain

エディタ上部の再生ボタンを押してゲームを再生してみます

f:id:baba_s:20180116150540g:plain

すると、ゲーム開始直後にボールが動くことが確認できます

f:id:baba_s:20180116150557p:plain

ボールが動くことが確認できたので、
エディタ上部の再生ボタンを押してゲームを停止します

ボールのバウンド

ボールが動くようになりましたが、壁に当たっても跳ね返らないため、
ボールが壁に当たったら跳ね返るようにしていきます

f:id:baba_s:20180116152518p:plain

Unity メニューの「Assets>Create>Physic Material」を選択します
「Physic Material」は、物理パラメータを管理するためのファイルです

f:id:baba_s:20180116152528p:plain

「Physic Material」が作成されたら

f:id:baba_s:20180116152540p:plain

「Perfect Bounce」という名前に変更します

f:id:baba_s:20180116152557p:plain

そして、「Perfect Bounce」を選択して、 パラメータを上記のスクリーンショットのように設定します

f:id:baba_s:20180116152608p:plain

これで、ボールを跳ね返るように設定した「Physic Material」が作成できたので
「Perfect Bounce」を「Sphere」にドラッグします

f:id:baba_s:20180116152617p:plain

「Sphere」を選択すると、「Perfect Bounce」が設定されていることが確認できます

f:id:baba_s:20180116153018p:plain

エディタ上部の再生ボタンを押してゲームを再生してみます

f:id:baba_s:20180116152903g:plain

すると、ボールが壁にあたって跳ね返るようになったことが確認できます

f:id:baba_s:20180116153027p:plain

ボールが跳ね返ることが確認できたので、
エディタ上部の再生ボタンを押してゲームを停止します

パドルの操作

ボールの挙動が作成できたので、次はパドルを操作できるようにしていきます
パドルを操作できるようにするために、プログラムファイルを作成します

f:id:baba_s:20180116145500p:plain

Unity メニューの「Assets>Create>C# Script」を選択します

f:id:baba_s:20180116153341p:plain

すると、プログラムファイルが作成できるので、
「PaddleController」という名前に変更します

f:id:baba_s:20180116153354p:plain

「PaddleController」をダブルクリックすると、
お使いの環境に合わせて Visual Studio や MonoDevelop などの、
プログラムを書くためのエディタが起動するので、
下記のプログラムをコピーして貼り付けます

using UnityEngine;

public class PaddleController : MonoBehaviour
{
    public float accel = 1000;

    private void Update()
    {
        var force = transform.right * Input.GetAxisRaw( "Horizontal" ) * accel;
        GetComponent<Rigidbody>().AddForce( force, ForceMode.Impulse );
    }
}

今回はプログラムの解説は割愛させていただきます
プログラムを貼り付けたら、Ctrl + S を押すなどしてプログラムファイルを保存します

f:id:baba_s:20180116154030p:plain

Unity に戻り、「PaddleController」を「Paddle」にドラッグします

f:id:baba_s:20180116154041p:plain

これで、「Paddle」に「PaddleController」を反映することができます

f:id:baba_s:20180116154048p:plain

さらに、ボールと同様に、パドルにも「RIgidbody」を付与します
「Paddle」を選択した状態で「Add Component」ボタンを押して
入力欄に「RIgidbody」と入力して、表示された「RIgidbody」を選択します

f:id:baba_s:20180116154056p:plain

そして、「Ridigbody」のパラメータを上記のスクリーンショットのように設定します

f:id:baba_s:20180116154224g:plain

これで、エディタ上部の再生ボタンを押してゲームを再生して、
左右の矢印キーを押すと、パドルが操作できるようになったことが確認できます
確認ができたらエディタ上部の再生ボタンを押してゲームを停止します

シーンの保存

最後に、ここまでの作業成果を保存しておきます

f:id:baba_s:20180116154914p:plain

Ctrl + S を押すと、シーンの保存確認画面が表示されるので
ファイル名に「Game」と入力して「保存」ボタンを押します

f:id:baba_s:20180116154949p:plain

そして、「Game」という名前の Unity アイコンのファイルが表示されたら
シーンの保存が完了です

次回は、ブロックの配置とゲームオーバーの実装を行っていきます

次のチュートリアル