Unity本の作例改造-Chapter3-11:スコアを加算するオブジェクトをつくる

スポンサーリンク

こんにちは!Unityの入門書で通称”ヒヨコ本”として親しまれている”Unity5入門 最新開発環境による簡単3D&2Dゲーム制作 “の作例に色々とゲーム要素を追加してオリジナルゲームに仕上げる内容を連載をしています。


Chapter1:Unityの概要と基礎知識
Chapter2:インターフェイスと使い方
Chapter3:Unityを使ってみよう!
Chapter4:キャラクターを動かしてみよう!
Chapter5:ゲームのUIを作ってみよう!
Chapter6:ゲームを作ろう!(1)
Chapter7:ゲームを作ろう!(2)
Chapter8:2D機能を使ってみよう!

スコアを加算するオブジェクトを作成する

前回は”ゲームスコアを画面に表示する“を行いました。今回はボールが接触するとスコアを加算するオブジェクトを作成してみたいと思います。

オブジェクトを作成する

まず、[Hierarchy]ウィンドウ > [Create] > 3D Object > Cube を選択。

オブジェクト名を”Spinner”に変更します。

[Hierarchy]ウィンドウ > Spinner を選択。[Inspector]ウィンドウ > Transformコンポーネントのプロパティを次のように調整します。
Position X -3.7 / Y 6.8 / Z 0.7
Rotation X 0 / Y 0 / Z 0
Scale X 0.3 / Y 2 / Z 1.5

配置したオブジェクトを[Game]ビューで確認するとこんな感じです。(タイトル画面は非表示にしてあります)

ボールが接触したらスコアを加算するスクリプトを作成する

[Hierarchy]ウィンドウ > Spinner を選択。[Inspector]ウィンドウ > [Add Component]ボタン > New Scriptを選択して下記の通り入力。[Create and Add]ボタンをクリック。
Name: Spinner / Language: C Sharp

スクリプト”Spinner”を編集する

[Project]ウィンドウ > スクリプト”Spinner”をダブルクリックでエディタで開き、下記コードを入力します。

加算するスコアを設定

[Hierarchy]ウィンドウ > Spinner を選択。[Inspector]ウィンドウ > Spinner (Script) > Score Point フィールドにボールが接触した時に加算するスコア値を入力します。今回は”10″を入力しました。

動作確認

ゲームを再生して動作を確認。オブジェクト”Spinner”にボールが接触した時に右上のスコア表示が変わって加算されたらOKです。

オブジェクトの回転を制御するスクリプトを作成する

配置したオブジェクト”Spinner”を回転させてスコアの加算にタイミングの要素を追加してみます。
[Project]ウィンドウ > スクリプト”Spinner”をダブルクリックでエディタで開き、下記のマーカー部分を変更します。

ゲーム実行中の処理でオブジェクトの角度を加算して回転しますが、変数値がどんどん増えてしまうのが気になるので、360度または-360度を超えるといったん0度に戻しています。

オブジェクト”Spinner”の回転速度を設定

[Hierarchy]ウィンドウ > Spinner を選択。[Inspector]ウィンドウ > Spinner (Script) > Speed フィールドに回転速度の値を入力します。今回は”100″を入力しました。
プラス値を入れると反時計回り、マイナス値を入れると時計回りに回転します。

動作確認

オブジェクト”Spinner”にボールが接触するとわずかに押し戻されるので得点が増える場合がありますね。

オブジェクト”Spinner”にボールが接触した時に跳ね返るようにする

ちょっと物足りないので、ピンボールのように跳ね返る設定を追加してみましょう。
[Project]ウィンドウ > スクリプト”Spinner”をダブルクリックでエディタで開き、下記のマーカー部分を変更します。

オブジェクト”Spinner”にボールが接触した時に加える力を設定する

[Hierarchy]ウィンドウ > Spinner を選択。[Inspector]ウィンドウ > Spinner (Script) > Thrust フィールドに値を入力します。今回は右上方向に跳ね返るように X 5、Y 5 を入力しました。

動作確認

オブジェクト”Spinner”にボールが接触すると右上方向に跳ね返ります。ボールを発生させるタイミングによって接触と跳ね返りがループする場合があるので変数の値を調整した方がいいですね。

オブジェクト”Spinner”のプレハブ化して複数配置

オブジェクト”Spinner”の設定ができたのでプレハブ化して複数配置。
回転の速い”Spinner”は得点を少なく、回転の遅い”Spinner”は得点を多くしてみました。
左上の”Spinner_1″

右側の”Spinner_2″

左下の”Spinner_3″

[Game]ビューでみるとこんな感じです。

動作確認

ここまでの内容をWebGLでビルドしてみました。スコアが加算されるようになったのでゲームらしくなってきました。

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

スポンサーリンク

フォローする