レッスンB01-B03
レッスンB04-B08
レッスンB09-B12
PS:前のレッスンのいくつかのエラーも修正されました。多くはufomeshとMikhailS habravchinsのおかげです 。
基本レッスン13-トリガーによる衝突の検出
このレッスンでは、無形のトリガーコライダーを使用して、プレーヤーには見えないオブジェクト間の衝突を検出する方法を説明します。
衝突を検出したいが、衝突するオブジェクトが停止しないようにしたい場合は、トリガーを使用する必要があります
トリガーを使用すると、オブジェクトがシーンのどこにあるかを正確に判断できます(アプリケーションの起動中)。
私たちのシーンには、青いプラットフォーム(「プラットフォーム」)に落ちる立方体(剛体のある「箱 」)があります。


当然、プラットフォームにはキューブが停止します。そのコンポーネントにはボックスコライダーがあるためです。

Box ColliderコンポーネントにはIs Triggerチェックボックスがあります。 有効にする場合
彼と再びシーンを実行すると、キューブはプラットフォームを介して落下します。

このようにして、ユーザーには見えない衝突を作成できます。 たとえば、プラットフォームでMesh Rendererコンポーネントを無効にします。 階層ビューでオブジェクトを選択すると、オブジェクトの緑色のアウトラインが表示されます。

プレイを押すと、キューブは目に見えないプラットフォームを通り抜けますが、これまでのところ、何が起こったのかはわかりません。

スクリプトを作成し、 トリガーと呼び、次のコードをクラス本体に追加します
// // myTrigger - , void OnTriggerEnter(Collider myTrigger) { if (myTrigger.gameObject.name == "box") { Debug.Log("Box went through!"); } }
プラットフォームにスクリプトを追加します。 これで、キューブがプラットフォームを通過するとすぐに、「ボックスが通過しました!」というメッセージがコンソールに表示されます。
元のレッスンへのリンク
基本レッスン14-GUIテキストとカウンター
このレッスンでは、GUIテキストコンポーネントを使用して画面にカウンター情報を表示する方法について説明します。
画面にテキスト情報を表示するには、 GUI Text要素を使用します。
シーンに追加します-Game Object-> Create Other-> GUI Text。

また、カメラのGUILayerコンポーネントがオンになっていることに注意してください。

テキストは、エディターを介して直接編集できます( テキストフィールド)。

ただし、これにはスクリプトを使用します。 スクリプト(GUITextExample)を追加します。 Update()メソッドでコードを記述します。
GUIテキストについて
GUIテキストはgameObjectのコンポーネントであるため、オブジェクト自体を通常のgameObjectとして処理できます。 コンポーネントは、 Component-> Rendering-> GUITextにあります。 つまり GameObject-> Create Other-> GUI Textを作成することにより、適切なコンポーネントで空の GameObjectを作成します。
guiText.text = "Hey What's Up?";
guiText.textパラメーターの設定ページに移動すると、次が表示されます。
var text :文字列
説明
表示するテキスト。
つまり、パラメーターを渡すときは、 文字列を渡す必要があります。
ゲームを開始すると、テキストが変わります。

カウンターを表示してみましょう。 クラスで、カウンター変数(Counter)を追加し、 Update()メソッドのコードを少し調整します。
private int Counter = 0; void Update () { ++Counter; guiText.text = Counter; }
その結果、Unityはエラーをスローします。
Cannot implicitly convert type `int' to `string'
int型の変数をstring型にキャストする必要があります。
これはさまざまな方法で実行できます。 それらのいくつかを次に示します。
... // ToString() - , guiText.text = Counter.ToString(); ... // Convert.ToString(value) - value String.Empty, value null. guiText.text = Convert.ToString(Counter) ... // '+' . guiText.text = "" + Counter; ... //etc
MSDNでの注意
文字列は不変です。文字列オブジェクトの内容は、オブジェクトが作成された後に変更することはできませんが、構文により変更が可能であるようです。 たとえば、このコード(「+」演算子を意味する)を記述するとき、コンパイラは実際に新しい文字シーケンス用の新しい文字列オブジェクトを作成します。
最後のメソッドを使用します。空行の代わりに、テキストを書き込みます。
guiText.text = "Counter is:" + Counter;
[再生]をクリックして、カウンター変数の値がどのように増加するかを確認します。

プロジェクトに追加のフォント(フォント)がある場合は、テキストのフォントを変更することもできます。
フォントを変更するには、 GUIText(Font)コンポーネントの対応するフィールドにドラッグするだけです。

ここでは、サイズ(フォントサイズ) 、位置合わせ(位置合わせ)などのその他のパラメーターを変更できます。
元のレッスンへのリンク
基本レッスン15-スクリプトを使用したコンポーネントの追加
このレッスンでは、スクリプトを使用してコンポーネントをオブジェクトに追加する方法を示し、それらを一度だけ追加したことを確認します。
ランタイムにコンポーネントを追加するために、スクリプトを使用します。
この例では、プラットフォーム(「プラットフォーム」)とその上にあるボックス(剛体のある「ボックス」)があります。

箱が落ちたらすぐにプラットフォームへのコンポーネントを完成させてみましょう。
addCompスクリプトを追加し、次のコードをクラスに追加します。
void OnCollisionEnter(Collision myCollision) { if (myCollision.gameObject.name == "Platform") { myCollision.gameObject.AddComponent(Rigidbody); } }
スクリプトをボックスに追加します。 私たちはプレイを押してみます-ボックスがプラットフォームに落ちるとすぐに、それも落ち始めます。

ただし、コンソールには警告が表示されます。
Can't add component 'Rigidbody' to Platform because such a component is already added to the game object!
このメッセージは、ボックスがプラットフォームと衝突するたびにRigidbodyコンポーネントを追加しようとしているため、つまり、複数回追加しようとしているために受信しました。 これを防ぐには、チェックを追加し、欠落している場合にのみコンポーネントを追加する必要があります。 OnCollisionEnter()にもう1つの条件を追加します。
void OnCollisionEnter(Collision myCollision) { if (myCollision.gameObject.name == "Platform") { if(!myCollision.gameObject.rigidbody) { myCollision.gameObject.AddComponent("Rigidbody"); } } }
次に、アプリケーションを実行し、コンソールに警告がないことを確認します。
元のレッスンへのリンク
基本レッスン16-シーン間の切り替え
このレッスンでは、Unityプロジェクトのシーンを切り替えるスクリプトを記述する方法について説明します。
Unityを完全に使用するには、異なるシーン間を切り替えたり、異なるレベル、メニュー、その他のコンテンツをロードできる必要があります。 これを行うには、 ApplicationクラスのLoadLevel()メソッドを使用します。
この例では、2つのシーンがあります。 最初(「レベル」) -キューブと平面(「床」)で、その上にあります。2番目(「ゲームオーバー」) -緑の光子とGUI Text'om-「YOU WIN!」


次のコードでスクリプト(LoadLevel)を追加します。
void OnCollisionEnter (Collision myCollision) { if (myCollision.gameObject.name == "floor") { Application.LoadLevel("gameover"); } }
再生をクリックします。 その結果、コンソールにエラーが表示されました:
Level 'gameover' (-1) couldn't be loaded because it has not been added to the build settings. To add a level to the build settings use the menu File->Build Settings...
実際、Applicationクラスを使用する場合、 ビルド設定で最終アプリケーションにロードするすべてのシーンを指定する必要があります。 [ファイル]-> [ビルド設定]ビルド設定に移動し、 レベルとゲームオーバーシーンをプロジェクトビューから[ビル設定]のトップフィールドにドラッグします。

エディタウィンドウからレベル名を指定できるようにスクリプトを少し変更し、スクリプトをより「柔軟」にします。
public string myLevel; void OnCollisionEnter (Collision myCollision) { if (myCollision.gameObject.name == "floor") { Application.LoadLevel(myLevel); } }
エディターウィンドウで、コンポーネントの対応するフィールドに対して、ロードするシーンの名前を入力します。

元のレッスンへのリンク