初めに
ブロック崩しを作って、Unityの使い方を学びましょう。本記事では、盤の生成、ボール、バーの生成、ボールを動かすところまでまとめます。
盤を作ろう
まずは、ボールやブロックを配置するための盤を作成しましょう。Unityのシーンビューやゲームビューの操作については、こちらの記事で説明しております。
fineworks-fine.hatenablog.com
また、ゲームオブジェクトの生成、操作方法についてはこちらで解説しております。ぜひご覧ください。
fineworks-fine.hatenablog.com
- ヒエラルキーで右クリックをし, Cubeを5つ作成します。(右クリック→3d Object→Cube)
- 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を動くようにします。今回は、ボールが壁を跳ね返る処理をするため、transformよりrigidbodyを使って動かしたほうが楽です。そのため、rigidbodyを使いましょう。下のリンク先でrigidbodyの使い方を解説しています。
- 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); } }
実行して確認してみましょう。
最後に
次の記事では、完成できると思います。引き続き頑張りましょう。