「30分で作ろう」シリーズ(3) 一人でタイムアタック
4. ラップタイムを記録しよう
説明
- ゴーカートがコースを1周した際のタイムをラップ表示として表示します。
- ラップタイムは、きちんとチェックポイントを通過しなければ記録できないものとします。
使用する変数
- ゲームステータス:ゲーム進行の状態を管理します。
- Car1_ミリ秒:タイムのミリ秒値を格納します。
- Car1_秒:タイムの秒値を格納します。
- Car1_分:タイムの分値を格納します。
- Car1_Lap数:ラップ数を格納します。
- Car1_Lapタイム:ラップタイムを格納します。
- CP1-1:チェックポイント1の通過の有無を格納します。
- CP2-1:チェックポイント2の通過の有無を格納します。
- CP3-1:チェックポイント3の通過の有無を格納します。
使用するオブジェクト
- カメラ
- サーキット1
- ゴーカート1
- 右スティック
- Aボタン
- Bボタン
- プログラム
- Car1_タイム表示
- スタートボタン
- カウントダウン表示
- Go
- Car1_ラップタイム(追加)
- チェックポイント1(追加)
- チェックポイント2(追加)
- チェックポイント3(追加)
作成手順
変数を追加
- 変数設定を開き、下記の名前で変数を追加しましょう。
- Car1_Lap数
- Car1_Lapタイム
- CP1-1
- CP2-1
- CP3-1

変数設定

オブジェクトを追加
タイトル(右)を追加します
ラップタイムを表示するために追加します。
オブジェクト追加ボタンをクリックし、「ツール」を選択して、「タイトル(右)」を追加しましょう。
オブジェクト追加ボタン

ツール/タイトル(右)

オブジェクト「タイトル(右)」を選択した状態でシーンエディタに切り替え、設定を変更しましょう。
シーンエディタ

下記のように設定しましょう。

「タイトル(右)」オブジェクトを長押しして、0 0:0.0に変更しましょう。
「タイトル(右)」オブジェクトを選択して、プログラムエディタに切り替えます。
プログラムエディタ

「タイトル(右)」から「Car1_ラップタイム」に名前を変更します。

立方体を追加します
- チェックポイントを作成するために追加します。
- チェックポイントは3つ配置します。
- ゴーカートはチェックポイントを1→2→3と順番に通過することがラップタイムを記録する条件となります。
- 逆走やショートカットは記録しないようにプログラムします。

オブジェクト追加ボタンをクリックし、「モデル」を選択して、「立方体」を追加しましょう。
オブジェクト追加ボタン

モデル/素材/立方体

オブジェクト「立方体」を選択した状態でシーンエディタに切り替え、設定を変更しましょう。
シーンエディタ

下記のように設定しましょう。

「立方体」オブジェクトを選択して、プログラムエディタに切り替えます。
プログラムエディタ

「立方体」から「チェックポイント1」に名前を変更します。

「チェックポイント1」オブジェクトを選択した状態で詳細ボタンを選択し、オブジェクト詳細画面に移動します。

色設定の透過率A(アルファ)値を0に設定し、オブジェクト詳細画面を閉じます。

コース上では透明になって見えなくなりますが、その場に存在しています。
「チェックポイント1」オブジェクトを選択した状態でコピーを2回選択します。
「チェックポイント1」と同じものが2つできます。

コピーされたオブジェクトをそれぞれチェックポイント2、チェックポイント3と変更しましょう。

オブジェクト「チェックポイント2」を選択した状態でシーンエディタに切り替え、設定を変更しましょう。

シーンエディタ

下記のように設定しましょう。

オブジェクト「チェックポイント3」も同様に設定を変更します。

下記のように設定しましょう。

プログラムを追加
ラップタイムを表示するプログラムを作ります

プログラムエディタ

下記のようにブロックを配置します

ラップが更新されたときに、下記のように動作します。
ラップ数とタイムを画面に表示
チェックポイント状態を初期化
ゴーカート1がチェックポイント1を通過した際の処理を追加します。

プログラムエディタ

下記のようにブロックを配置します。

- チェックポイント1とゴーカート1が接触した時
- もし、チェックポイント2に接触していなければ、チェックポイント1を通過とします。
- それ以外は、未通過とします。
ゴーカート1がチェックポイント2を通過した際の処理を追加します。

プログラムエディタ

下記のようにブロックを配置します。

- チェックポイント2とゴーカート1が接触した時
- もし、チェックポイント1に接触していれば、チェックポイント2を通過とします。
- それ以外は、未通過とします。
ゴーカート1がチェックポイント3を通過した際の処理を追加します。

プログラムエディタ

下記のようにブロックを配置します。

- チェックポイント3とゴーカート1が接触した時
- もし、チェックポイント2に接触していれば、チェックポイント3を通過とします。
- ラップ数に1を加えます。
- 現在のタイムをラップタイムとして格納します。
- 現在のタイムを初期化します。
- それ以外は、未通過とします。
Car1_Lapタイム表示部分のブロック構成

動かしてみよう

ラップ数とラップタイムが表示されました。
これで完成です。お疲れ様でした。
次は「対戦タイムアタック」に進みましょう!
