Unity3d。 Unity 3D学生からの教訓(B00-B03)

こんにちは www.unity3dstudent.comからUnity3dのレッスンの翻訳版を提案します



はじめに



この記事は、基本的な(初心者セクションからの)レッスンの最初のセットです。 レッスンの主な目的は、スクリプトの学習とコンポーネントの使用です。

したがって、Unity GUIでの作業の基本に多少精通していることを前提としています。 そうでない場合は、 同じサイトの紹介セクションをご覧ください。

レッスンはかなり明確で短いため、学習の過程で最小限の困難が生じるはずです。



PS:それは良いか悪いか-質問は非常に複雑です。



レッスンの一部の場所では、主要なポイントに影響を及ぼさない最小限の外観上の変更があります。







基本レッスン00-固体に質量/重力を追加します。






このレッスンでは、Rigidbodyコンポーネント(ソリッド)を使用してオブジェクトに重力/質量を追加する方法について説明します。



オブジェクトに質量または重力を追加する場合は、コンポーネントメニューにあるRigidbodyコンポーネントを使用する必要があります。



完成したプロジェクトにプロジェクトまたは新しいシーンを作成します( 標準アセットパッケージを事前に接続します )。 キューブ( GameObject-> Create Other-> Cube )、プレーン( GameObject-> Create Other-> Plane )、およびポイントライト( GameObject-> Create Other-> Point Light )を追加します 。 以下の画像に示すようにそれらを配置します。



image_0_0



また、すべてのオブジェクトが表示されるようにカメラを配置します。 [ 再生 ]ボタンをクリックすると、何も起こらない静的なシーンが表示されます。



image_0_1



次に、 Rigidbodyコンポーネント(ソリッド)を追加します。 コンポーネント->物理メニューにあります。 キューブを選択して、このコンポーネントを追加します。



image_0_2



Playをクリックすると、重力の影響で立方体がどのように平面に落ちるかがわかります。 キューブの物理的プロパティを少し変更してみましょう。 キューブをもう一度選択します。 インスペクタービューでは、パラメーターの1つがMaterial (デフォルト値はNone(Physics Material) )であるBox Colliderコンポーネントを確認できます。 この値を右クリックすると、物理マテリアルを選択するためのウィンドウがポップアップ表示されます。 リソースの標準セット( Standard Assets )を接続してプロジェクトを作成した場合、いくつかの標準的な物理マテリアルが表示されます。 Bouncyを選択します







[ 再生 ]をクリックすると、落下後、キューブが表面から跳ね返り始める様子がわかります。



元のレッスンへのリンク



追加資料:


公式のUnity3dコンポーネントリファレンスのRigidbodyコンポーネントセクション



公式のUnity3dスクリプトリファレンスからのRigidbodyクラスリファレンス





基本レッスン01-衝突検出の基本。






このレッスンでは、スクリプトを使用してオブジェクト間の衝突を検出する方法について説明します。





前のレッスンのようにシーンを作成するか、既存のシーンをロードします。 キューブをもう1つ追加し、水平方向に5〜6倍、垂直方向に2倍に伸ばします。 下の画像のように配置します。



image_1_0



このレッスンでは、オブジェクトの名前が重要です。 平面にFloorという名前を付け、壁Wallを表すキューブ(K.O.)



プロジェクトビューで、 [ 作成 ]をクリックし、[ C#スクリプト ]を選択しますboxdropという名前を付けます。 スクリプトをダブルクリックすると、スクリプトエディターでスクリプトが開きます(通常、既定では、これはMonoDevelopです。この記事の著者は、Windows用のVisual Studio 2010またはMacO用のTextmateです)。



クラス名は常にスクリプト名と一致する必要があることに注意してください(大文字と小文字の区別も重要です)。



//!           public class boxdrop : MonoBehaviour {
      
      







デフォルトでは、UnityはC#スクリプトのフレームワークを作成します。 ボックスドロップクラスの本体からすべてのコンテンツを削除し、次のものに置き換えます。



 //      void OnCollisionEnter() { Debug.Log("Hit Something"); //     Unity }
      
      







OnCollisionEnter関数は、オブジェクトと他のオブジェクトとの衝突を判別します。 そして、 Debugクラスの静的Logメソッドは、Unityコンソールにメッセージを書き込みます。 スクリプトを保存したら、立ち下がりキューブのコンポーネントとして追加します。

キューブが床に触れる瞬間にPlayを押すと、コンソールにメッセージが表示されます。 コンソールウィンドウは、Windowsではctrl + shift + c 、MacOではcmd + shift + cの組み合わせで開くことができます。 最後のコンソールメッセージは、プロジェクトのステータスバー(ウィンドウの下部)に表示されます。



image_1_1



そして、衝突のたびにメッセージが発行されます。

キューブがどのオブジェクトに面しているかを正確に理解するために、 OnCollisionEnterメソッドが取得するCollisionクラスパラメーターの値を取得します



 //      Collision,     void OnCollisionEnter(Collision myCollision) { //       if (myCollision.gameObject.name == "Floor") { //        Debug.Log("Hit the floor"); } else if (myCollision.gameObject.name == "Wall") { Debug.Log("Hit the wall"); } } }
      
      







[ 再生]を押して、キューブが壁や床に数回触れた後、ゲームを停止してコンソールを開きます。 現在、壁または床のみとの衝突では、オブジェクトの名前に対応するメッセージが発行されます。



image_1_2



元のレッスンへのリンク



追加資料:


公式Unity3dスクリプトリファレンスのOnCollisionEnter()関数のヘルプ



公式Unity3dコンポーネントリファレンスのコライダーコンポーネントセクション:









基本レッスン02-入力の基本






このレッスンでは、スクリプトを使用した入力の基本について説明します。



Unityには、テキストデータを入力する多くの方法があります。 スペースバーを押すとUnityコンソールにメッセージが表示される最も単純なケースを検討します。 前のレッスンとは異なり、このシーンにはカメラと空のゲームオブジェクトのみがあります( GameObject-> Create Empty )。



image_2_0



C#スクリプトを追加して、 keyPressと呼びます。 スクリプトを開きます。 keyPressクラスの本体には、空のUpdate()関数が表示されます。 すべてのフレームと呼ばれます:



 //  Update()      void Update () { }
      
      







キーボード入力があったかどうかを理解するには、フレームごとにこれを確認する必要があります。 更新機能に次のコードを追加します。



 //   ,   "Jump"(   ) if (Input.GetButtonUp("Jump")) { Debug.Log("We Have Hit the Space Bar"); //     }
      
      







ファイルを保存し、このスクリプトを空のオブジェクトに追加します(スクリプトをオブジェクトにドラッグするか、オブジェクトを選択してスクリプトをインスペクタービューにドラッグします)。 Jumpとは何かを調べましょう。 [編集]-> [プロジェクト設定]-> [入力]に移動します。



image_2_1



Inspector'eで入力マネージャーが開きました。 軸を展開します。 Jumpを選択すると、その名前が「Jump」行を表し、Positive Button変数の値がスペースであることがわかります。 Unityリファレンスブックのその他のパラメーターについて読むことができます(レッスンの最後のリンク)。



image_2_2

シーンを実行し、[ ゲームビュー ]タブに移動してスペースバーを押すと、対応するメッセージがコンソール(およびプロジェクトウィンドウの下部)に表示されます。





image_2_3



文字列を置き換えると、同様の結果が得られます。

 if (Input.GetButtonUp("Jump")) {
      
      







 if (Input.GetKeyUp(KeyCode.Space)) {
      
      





元のレッスンへのリンク



追加資料:


公式Unity3dスクリプトリファレンスのInputクラスのヘルプ



公式のUnity3dコンポーネントリファレンスからの入力コンポーネントのセクション









基本レッスン03-プレハブ






このレッスンでは、プレハブの作成方法と、プレハブが必要な理由を説明します。



プレハブ(プレハブ)はプロジェクトに含まれるオブジェクトであり、クローンを作成してそのインスタンスを多数作成できます。同じコンポーネントをコピーすると、すべてのコピーに同じコンポーネントが含まれます。 ベースレッスン1からシーンを作成またはロードします。シーンにキューブがあり、オブジェクトに遭遇するとクラッシュし、コンソールにメッセージを発行します。 同じキューブの多くを作成したい場合(コンポーネントが既に追加されている場合)

プロジェクトビューで[作成]-> [プレハブ]を使用してプレハブを作成します



image_3_0



その結果、New Prefabという灰色のアイコンが表示されます。



image_3_1



名前をBouncyBoxに変更します。 必要なものをすべてプレハブにドラッグするだけです。 それがCubeです。



image_3_2





アイコンの色が青に変わり、プレハブを選択すると、 インスペクタービューで Cubeオブジェクトと同じパラメーターが表示されます。

プレハブインスタンスを作成する場合は、シーンにドラッグする必要があります。



image_3_3



[ 再生]をクリックすると、追加されたキューブが元のキューブとまったく同じように動作することがわかります。

多くのコンポーネントを含む多くの同一オブジェクトを作成する必要がある場合、プレハブが必要です。 たとえば、ゲームを開発しているときに、同じ動作、外観などを持つ多くの敵を追加する必要がある場合。



image_3_4



元のレッスンへのリンク



追加資料:


Unity3d公式マニュアルのプレハブセクション



All Articles