このブログは「ファイブボックス一分間Unity講座」の補足説明となる記事です。主にUnityに初めて触れる方や初心者向けの講座になります。
またUnityに慣れてきている方でも、もう少し知識や技術を磨きたい方にとっても有益な情報も記載していますので、もしよろしければご参照ください。
今回は3Dオブジェクトにジャンプの力を与える方法です。以前の記「AssetStoreから素材を取り込む方法」で取得したUnity-Chanのキャラクターを使って説明します。
また、キャラクターにはRigidbodyコンポーネント、CapsuleColliderコンポーネントが追加されています。追加方法は前回の記事「3Dオブジェクトに重力を与える方法」をご参照ください。
基本のジャンプ動作
一分間Unity講座 3Dオブジェクトのジャンプ Step1 のショート動画です。ご興味がございましたら、こちらの動画もご参照ください!
スクリプトファイルの追加
Assets 内で Create ⇒ C# Script でスクリプトファイルを作成し、「PlayerController」という名前に指定します。
作成したスクリプトファイルをHierarchy上のオブジェクト、またはオブジェクトのInspectorにドラッグ&ドロップ、プログラムを適用させます。これを「Attach(アタッチ)」と言います。
アタッチすることでスクリプトファイルは、このオブジェクトのコンポーネントの一つとしてふるまうことができるようになります。
プログラムの作成
作成したスクリプトファイルに以下のコードを追記します。
Rigidbody rb; //Rigidbody型の変数 public float jumpPower; //ジャンプ力 アクセス修飾子をpublicに指定 void Start() { rb= GetComponent<Rigidbody>(); //Rigidbodyを取得、変数に代入 } void Update() { //上矢印キーが押されたとき if (Input.GetKeyDown(KeyCode.UpArrow)) { //Rigidbodyに上方向にJumpPowerの力を加える rb.AddForce(transform.up * jumpPower); } }
ここでは変数を2つ宣言しています。 c# では変数を宣言する際、「型」を指定する必要があります。型については、下で詳しく説明しますので、そちらをご参照ください。
変数の宣言
1つ目は「Rigidbody型」、Rigidbodyコンポーネントの情報を格納できる型です。
2つ目は「float型(浮動小数点型)」の jumpPower 、こちらはアクセス修飾子に public を指定しています。このことにより、inspectorから値を指定することができるようになります。サンプルでは InspectorでjumpPower に200 の力を与えています。
変数の初期値取得
start関数は、Unityが起動して最初に1回だけ実行されるイベント関数です。実際は Awake関数が一番最初に起動し、その後Update関数とStart関数が同時に呼び出されます。今回のように単体のオブジェクトのみのプログラムの時は、Start関数内で初期値を取得します。取得するのは変数で宣言した RIgidbody型のrbです。
コンポーネントを取得するには、GetComponent関数 を使用します。
ジャンププログラム
ジャンプはRIgidbodyコンポーネントの Velocityプロパティに力を与えます。ジャンプの様に瞬間的に力を加える際は、AddForce()メソッド を使用します。
上向き矢印キーが押された際に以下のコードでRigidbodyのVelocity に jumpPowerで上向きの力を加えます。
rb.AddForce(transform.up * jumpPower);
C#の型について
C#では、型(データ型)は変数がどのような種類のデータを持つことができるかを定義します。これにより、メモリの効率的な使用とデータの正確な操作が可能になります。C#の型は大きく分けて値型と参照型の二つに分類されます。
Unityで個人的によく使用するのは、青色で示しています。
値型 (Value Types)
値型は、変数が直接そのデータを格納する型です。これにより、値型の変数はメモリ上にその実際の値を持ちます。基本的に、値型はスタック(メモリの一部)に格納され、スコープを離れるとメモリが自動的に解放されます。
- 数値型: 整数 (int, long, short, byte, など) や浮動小数点数 (float, double, decimal)、Unityでは計算の速い int型、float型がよく利用されます。
- ブール型: 真偽値 (bool)。trueまたはfalseのいずれか。
- 文字型: 一つの文字を扱う (char)
- 構造体: カスタムの値型 (struct)
- 列挙型: 列挙された定数の集合 (enum)
参照型 (Reference Types)
参照型は、実際のデータではなくデータへの参照(ポインタ)を保持する型です。参照型の変数はヒープ(メモリの別の部分)にある実際のオブジェクトを指します。参照型のオブジェクトはガベージコレクションによって管理され、使用されなくなったときにメモリが解放されます。
- クラス: オブジェクト指向プログラミングの基本要素 (class)。この課題で定義したコンポーネント型もオブジェクト指向フレームワーク内で使われるクラスの一種です
- 配列: 同じ型のデータのコレクション (array)
- 文字列: 文字のシーケンス (string)
- デリゲート: メソッドへの参照 (delegate)
- インターフェース: 他のクラスが実装すべきメソッドの定義 (interface)
これで基本のジャンプができるようになりました。
ファイブボックスでは、Unityの個別指導のオンラインレッスンを行っています。
ご興味のある方は当サイト、オンラインレッスンから、無料体験授業へお問い合わせ下さい。