i-school - 3Dダイビングゲーム 手順13
 この手順でも、UI(ユーザーインターフェース)について学習しながら実装を行います。
キャラと水面までの距離を計算して常時画面に表示し、あとどの位で水面についてしまうのかをユーザーに伝えるようにします。

 ここでは最初に、距離の計算処理を実装します。


<完成画像>



<完成動画>
https://gyazo.com/151ee074c84fd6f06782161a5cb3c2ec


 以下の内容で順番に実装を進めていきます。

手順13 −キャラと水面までの距離を計測する処理の実装−
21.スクリプトを使って、キャラと水面がどの位の距離離れているかを計測する



 新しい学習内容は、以下の通りです。

 ・自分でプログラムを考えてスクリプトに記述する



21.スクリプトを使って、キャラと水面がどの位の距離離れているかを計測する

1.設計


 この手順では、処理を自分で設計して、実際にスクリプトの設計を考えて、自分で書いて頂きます

 設計を考えて実装を行っていく際には、前にもお話しましたように、一度にすべての処理を組み込もうとしないことが大切です。
1つずつ順番を考えて、その順番通りにロジックを組み込んでいき、その処理が正常に動いているのを確認した上で、その次の処理を実装します。

 そうやって小さな処理を積み重ねを行って、目的とする1つの処理が完成するように考えてください。


2.制御したい処理を日本語で書き出して、それを元にロジックを考えていく


 この手順では大きく分けて2つの処理の実装を考えてください。

 まずは、キャラと水面とがどの位離れているかを計算する方法です。
そしてもう1つは、その計算した距離をゲーム画面に表示する方法です。



 最初は、1つ目の「キャラと水面とがどの位は慣れているのかを計算する」という処理について、考えてみてください。

 この制御処理を実装するために、必要な情報はなんでしょうか。つまり、どんな情報があれば、キャラと水面との距離を測ることが出来るでしょうか。
そのためには、どんなゲームオブジェクト、あるいはスクリプトの情報を参照すれば必要な情報を確認できるでしょうか。

 その部分を考えてください。

 必要な情報がわかったら、その情報がすでにスクリプトやゲームオブジェクトによって取得できるものなのか、
あるいは新しく追加しれければ取得できない情報であるのかを考えます。

 キャラと水面については参照できる情報がありそうですが、どの位離れているか、という情報はどこにもなさそうです。
ではその情報を新しく変数として用意をしなければなりません。この値をどのスクリプトに用意すればよいのかも考えます。

 今回の実装例では、新しくスクリプトを作成し、そのスクリプトをアタッチする専用のゲームオブジェクトを作成していますが
すでにあるスクリプトに追加をしていただいても問題ありません。

<ヒント>

 <= クリックすると開きます。




 参照する情報が決まったら、それらがどの位離れているのか、という計算をどのように行うか考えます。
距離の計算は、2点の位置情報があればそれを減算すれば、その差分値が距離となりますので、
この計算式を、常時行ってくれるメソッドに記述するようにすればよいでしょう


<ヒント>

 <= クリックすると開きます。


 まずは自分で処理を考えて書いてみましょう。距離の値は、Debug.Logメソッドを利用して Console ビューに表示させてください
その値が実際のキャラと水面との距離になっていれば、距離の値がどんどんと小さくなって、いずれはマイナスになると思います。


<実装動画>
https://gyazo.com/362c348a57b8b892bcc0811ab98edb38


3.自分でスクリプトを書いてみる


 こちらには参考用のスクリプトを掲載します。
先ほどもお伝えしたように、新しいスクリプトを作成して、その中に距離の計算処理を記述しています。

 この通りである必要はありませんので、自分で処理を作ってから確認しましょう。


GameManager.cs

 <= クリックすると開きます


 スクリプトが完成したら、ゲームを実行して、距離の制御処理が行われているか、確認してください。


4.キャラと水面の距離が 0 以下になったら、距離の計算を停止する


 それでは次のプログラムも考えてみます。

 キャラと水面との距離の計算ですが、ご覧の通り、水面に到着しても計算を行うため、マイナス方向への距離が計算されてしまいます。


Console 画像



 この距離の計算に対して制御を行って距離が 0 以下になったら、そこで距離の計算を停止するように処理を考えてください。

 条件の方法は自由です。新しく変数を用意して、着水判定のように制御を行ってもよいですし、現在ある情報のみで制御をおこなってもよいです。

<ヒント>

 <= クリックすると開きます。


<実装動画>
https://gyazo.com/34e30222711e622f2e1f8aabec5bbfea


5.自分でスクリプトを書いてみる


 作成したロジックを元に、実際に処理を書いてみて制御をおこなってください。


GameManager.cs

 <= クリックすると開きます


 スクリプトが完成したら、ゲームを実行して、距離が 0 以下になったら計算が停止するかどうか、確認してください。


 以上でこの手順は終了です。

 => 次は 手順14 −距離の表示処理の実装− です。