メインコンテンツまでスキップ

デモプロジェクトの作成

ここに掲載されている画像、撮影の順番がぐちゃぐちゃなので、後に作るものが先に映り込んでいたりします。

また画像が足りていません。

余計なものに惑わされないように気を付けて作業してください。ややこしくてごめんなさい。

ゲームをつくっていく

皆さんお待ちかねのデモゲーム制作に入ります。

1.カメラの表示範囲をいじる(多分飛ばしてOK)

カメラの表示範囲を変更します。

左側にあるヒエラルキーウィンドウにあるMain Cameraをクリックすると、右側のウィンドウにMain Cameraのインスペクターが開きます。

そうしたらにある位置を(0, 0, -20)に、その下にあるCameraという項目にあるサイズを12に変更します。

この項目内の背景から背景色を変更できます。好きな色にしましょう。

2.壁を生やす

現在、ここには壁がありません。

このままではボールが跳ね返らずカメラの遥か彼方へ運動し続けてしまいます。

なので壁を作って当たり判定をつけて跳ね返るようにしなくてはなりません。

危険

プログラミングの分野では基本的に英語が標準的に使用されます。Unityのオブジェクト名も同じで日本語を使うと後で後悔します。せめてローマ字で書きましょう。

2-1.2Dオブジェクトを作る

ヒエラルキーを右クリックして、2Dオブジェクトから、四角形を選びます。

名前はわかりやすいようにwallとかにしましょう。

9

端のほうに配置しましょう。

ゲームタブで見るとどのようになっているかわかりやすいです

当たり判定を付ける

でもなんとこれで壁の完成ではありません。このままだとボール君は壁を認識できずやっぱり世界の彼方へ飛んで行ってしまいます。

というわけで、壁に当たり判定を付けてあげましょう。

さっき作った四角形をヒエラルキーから選ぶと、右にメニューが出てきます。

それの一番下にコンポーネントを追加というのがあるので、それを押しましょう。

上のほうに「Physics2D」があるので、これを選択。

上から2番目の「BoxCollider2D」を選択しましょう。

10

こんなのが出てきたら、当たり判定の実装が完了です。

11

壁をいい感じに囲ってあげましょう。

3.プレイヤーを生み出す

3-1 オブジェクト生成

いよいよプレイヤーを作っていきます。急にゲームらしくなりますね。

まず、さっき壁を生やしたときのように四角形を生成します。名前はPlayerとかにしておきましょう。

当たり判定もつけたいので、ここもさっきと同じようにBoxCollider2Dをつけましょう。

12

3-2 スクリプトの作成

続いてはプレイヤーを動かすスクリプトを作っていきましょう。みんな大好きプログラミングのお時間です。

画面下のアセットを右クリックし、作成を選択します。そこからさらにC#スクリプトを選びます。

csharp

名前はPlayerControllerとかわかりやすくしておきましょう。

できたら作ったやつをダブルクリックします。VisualStudioが開けばOKです。

ひとまずこのように入力してください。それぞれの意味はこの後解説します。

17

17.1

ここはUnityでコード書くぜ!ってやつです。

これからUnityでコード書くときはこれがあるか確認しましょう。(自動で書かれるから多分だいじょうぶ)

17.2

ここは変数です。この変数はスピードを管理してます。

publicってつけてると、Unity側でこの数値をいじくれるので便利です。(後述)

17.3

void startはゲームが始まったときに一回だけ実行する!ってやつです。

最初の変数の設定なんかはここで設定したりします。

void updateゲーム中ずっと繰り返し実行するぜ!ってやつです。ゲームの操作なんかはここに書きましょう。

17.4

ここは矢印キーの左右で移動できるようにするプログラムです。

3-3 スクリプトのアタッチ

いまのでスクリプトが完成しました。でもこれだと、プログラムは存在してはいますが使える状態にはありません。

というわけで、スクリプトをプレイヤーにアタッチしましょう。

Unityのエディターに戻りましょう。 そうしたら左のヒエラルキーから、Playerをクリックしましょう。

右に出たメニューに、さっき作ったスクリプトをドラッグ&ドロップしましょう。右メニューを一番下までスクロールしてからドラッグするとちょっとやりやすいかも。

17.5

Gif1

こんな感じになったら成功です。再生ボタンを押して左右矢印を押したら、Playerが動くと思います。

ちょっとゲームらしくなってきました。

4 ボール作成

4-1ボールの作成

ボールの作成編の一個目のタイトルがボールの作成ってややこしいですね。

さっき何回か四角形を作ったときのように、ヒエラルキーを右クリック→2Dオブジェクト→サークルを選択します。

名前はballとかにしておきましょう。

18

大きさはお好みで調整してください。

あんまりでかくしすぎてもあれだけど。

次に、当たり判定をつけましょう。今回はboxColliderじゃなくてCircleClider2Dを選びましょう。BoxColliderの下のほうにあるとおもいます。

19

それから今回はもう一個つけるものがあります。

20

RigidBody2Dというやつです。こいつは物理を物に適用させることができます。

一回再生してみましょう。

物理が適用されているので落ちていってしまいましたね。

重力はいらないから消してしまいましょう。

21

ここをいじると重力の強さを変えられます。

0にすれば無重力になるので0にしてあげましょう。 なんと今回はさらに作るものがございます。

gif3

4-2 ボールのスクリプト作成

次は、ボールに初速度を与えるプログラムを作っていきます。

さっきプレイヤーのスクリプトを作成したときと同じように、C#スクリプトを作成しましょう。

名前はballとかでいいと思います。

Cscript

こちらがプログラム全体となります。

allball

ここがボールのスピードを管理する変数です。さっき書いたようにここもpublicにしておくと便利です。

ballspeed

ここはボールに力を加えて動かすプログラムです。座標を変えるのではなく力を加えるなので、これで反射したりします。

ballscript

プログラムが完成したら、さっきPlayerにやったのと同じように、ballにスクリプトをアタッチしましょう。

alt text

ここから物理マテリアルを作成します。

alt text

作成出来たらこのような値にしてください。

rigitbody_physics_material

作成したらballのRigitbody2Dのマテリアルという部分にドラッグ&ドロップします。

RigitBodyだけでは衝突したときに通り抜けなくなるだけですがこの物理マテリアルを追加すると跳ねるようになります。

再生ボタンを押してボールが動き始め、壁とかでバウンドしたら成功です。

5 ブロックの作成

5-1 ブロックのプレハブ作成

まずプレハブってなんぞや?って人もいらっしゃるでしょうから解説していきます。

プレハブっていうのは設計図みたいなものです。プログラムから何かものをいっぱい作りたいときとかに、このプレハブをもとに作ります。

今回はブロックをプレハブで作ります。

まずは四角形を作ります。好きな大きさでいいですがでかくないほうがいいでしょう。

これに当たり判定をつけましょう。もちろん今回もBoxColliderです。今まで通り入れましょう。

そしたら次、ヒエラルキーにあるブロックをアセットまでドラッグ&ドロップしましょう。

prefab アセットにあるこれがプレハブです。

5-2 ブロックのスクリプト作成

続いてはブロックのスクリプトです。ボールが当たったら消えるっていうプログラムを作りましょう。

C#スクリプトを作成します。名前はBlockControllerとかでいいと思います。

今回作るプログラムは、ボールが当たったときにブロックを消滅させるプログラムです。

blockscript

こちらがプログラム全体となります。この下の部分が、ボールが当たったときにブロックを消滅させるプログラムです。 このプログラム、結構流用できるので活用してくれるととてもうれしい。

5-3 スクリプトのアタッチ

さっき作ったスクリプトのアタッチをしましょう。

アセットからさっき作ったプレハブをクリックすると、右にこれが出てくると思います。ヒエラルキークリックしたときとよく似ていますね。

ここに、今までスクリプトをアタッチしたときのようにやってみましょう。プレハブにスクリプトをアタッチできるはずです。

5-4 ブロックの配置

プレハブをアセットからゲーム画面のエリアにもっていくと、そのまま配置することができます。

大体きれいに並ぶ感じでいっぱい並べましょう。一個ぐらい傾いてるやつがあっても面白いかも。 これが終わればほとんどメインは完成です。

6 ゲームオーバーの実装

6-1ゲームオーバーの処理

注記

ここは元の記事とは別の人が作成しているのですがcontrolのスペルを見事にcontrollと勘違いしてるので実際に書く時にはcontrolで書いてください。

ここの処理の説明がちょっとめんどくさいので、とりあえずコード見せます。

Ball_gameover

これがボール側のコードです。

Y座標が画面下(打ち返せなくなった時)にplayerControllerのGameという関数を実行しています。

game

これがPlayerController(打ち返すやつ)のコードです。

上でgameが実行されるとendという変数を1にします。すると操作するコード部分にifがあって0の時のみ操作できるようになっているので、ゲームオーバー後プレイヤーの操作ができなくなります。

text

ここからテキストを選択していい感じに色付けたり大きさ変えたり説明すると大変なのでわからなかったら調べて調節してください。

import_object

Playerを動かすコードにこのようなものを追加してください。

hieraruki-

追加したらプレイヤーのインスペクターに移動しC#ScriptのOver_objectというところに先ほど作ったtextを指定してください。

ヒント

出てこない場合コードを打ち間違えているか保存していないかスクリプトをアタッチしてないかです。確認してみてください。

6-2 シーン

ここまで書いててシーンの解説を完全に忘れてました。

シーンっていうのは、Unityのプログラム上の場面、画面を指すものです。

例えば今作業してるのがゲームシーンで、実際のゲームをする場所です。

6-3 やりなおし

ゲームにハマってもらうためにすぐにリスタートできるようにするといいです。

UIのテキストと同じ要領でボタンを出していい感じにデザインします。