ひとりでのアプリ開発 - fineの備忘録 -

ひとりでアプリ開発をするなかで起こったことや学んだことを書き溜めていきます

Unity入門 - ブロック崩しを作ってみよう① -

初めに


 ブロック崩しを作って、Unityの使い方を学びましょう。本記事では、盤の生成、ボール、バーの生成、ボールを動かすところまでまとめます。

ブロック崩しとは

 ブロック崩しとは、画面上を反射しながら移動するボールを、画面下部に落ちないように、パドル(バー)を左右に操作して打ち返し、煉瓦状に並べられたブロックを消していくゲームです。

盤を作ろう

 まずは、ボールやブロックを配置するための盤を作成しましょう。Unityのシーンビューやゲームビューの操作については、こちらの記事で説明しております。
fineworks-fine.hatenablog.com

 また、ゲームオブジェクトの生成、操作方法についてはこちらで解説しております。ぜひご覧ください。
fineworks-fine.hatenablog.com

  1. ヒエラルキーで右クリックをし, Cubeを5つ作成します。(右クリック→3d Object→Cube)
  2. Cubeの大きさや位置をインスペクターから次のように調整します。

Position Scale
Cube (0, -3, 0) (10, 1, 16)
Cube(1) (0, -2, -7.5) (10, 1, 1)
Cube(2) (0, -2, 7.5) (10, 1, 1)
Cube(3) (-4.5, -2, 0) (1, 1, 14)
Cube(4) (4.5, -2, 0) (1, 1, 14)

 これで, 次のような盤を作ることができたと思います。

 サイズや位置はシーンビューを見ながら調整してもよいです。精確に作りたいのであれば、大きさをインスペクターで数値を直接入力しましょう。

カメラの位置を合わせる

 ゲームビューを確認してみましょう。デフォルトのカメラの位置、向きでは、次のようになっていると思います。

 このままでは、手前が映っていないため、カメラの向きを調整しましょう。

  • シーンビューでMain Cameraをクリック

 ゲームビューを確認しながら、Main Cameraを操作できるようになります。

  • Transform toolsを使い、Main Cameraを調整

 これが、Transform toolsでした。これを使って位置や向きを調整しましょう。

 左から、

①Hand Tool(左クリック&ドラッグで視点の移動)
②Move Tool(左クリック&ドラッグでオブジェクトの移動)
③Rotate Tool(左クリック&ドラッグでオブジェクトの移動)
④Scale Tool(左クリック&ドラッグでオブジェクトの大きさの変更)
⑤Rect Tool(左クリック&ドラッグでオブジェクトの隅を動かす)
⑥Move, Rotate or Scale selected objects(選択中のオブジェクトの移動、回転、大きさの変更ができる)
⑦Available Custom Editor Tools(自分でツールをカスタムし、使うことができる)
でした。
 次の画像に表示されている値に近い値であれば、うまく全体が表示されていると思います。

ボールとパドル(バー)を生成しよう

 ボールと自分が操作するためのパドル(バー)を生成しましょう。

  • インスペクターで右クリックし、SphereとCubeを生成
  • Sphereと新しく生成したCubeの位置、サイズを調整

Position Scale
Sphere (0, -2, -5) (1, 1, 1)
Cube (0, -2, -6) (2, 1, 0.8)

  • 新しく生成したCubeを分かりやすいように"Bar"に名前を変えておく

 Cubeを右クリック→Rename

  • Bar、Sphere、Cube(1)の色を変える

 すべて白色で見にくいため、色を変えておきましょう。

 色の変え方もこちらの記事で解説しております。

fineworks-fine.hatenablog.com

 Materialをアタッチし、色を変えてみました。

ボールを動くようにしよう

 Sphereを動くようにします。今回は、ボールが壁を跳ね返る処理をするため、transformよりrigidbodyを使って動かしたほうが楽です。そのため、rigidbodyを使いましょう。下のリンク先でrigidbodyの使い方を解説しています。

fineworks-fine.hatenablog.com

  • SphereにRigidbodyをアタッチする

 Sphereに力を加えるために、Rigidbodyをアタッチします。(Sphereを選択→Add Component→Physics→Rigidbody)

  • AssetsにPhysic Materialを生成し、Dynamic Friction、Static Frictionを0に、Bouncinessを1にする

 Assetsで右クリック→Create→Physic Materialで生成できます。また、インスペクターからFriction(摩擦)、Bounciness(反発係数)を入力できます。

  • 盤を作っているCube、Sphere、BarのColliderにPhysic Materialをアタッチする

 ボールが動き続けるようにするために、摩擦を0、反発係数を1にしたPhysic Materialをアタッチします。

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

public class SphereScript : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
      Rigidbody rb = this.GetComponent<Rigidbody>();
      Vector3 force = new Vector3(5f, 0.0f, 6f);
      rb.AddForce(force, ForceMode.VelocityChange);
    }
}

 実行して確認してみましょう。

最後に

 次の記事では、完成できると思います。引き続き頑張りましょう。