物理エンジンと衝突判定 (2/4)
作成:2014-05-31 09:57
更新:2014-05-31 10:05
更新:2014-05-31 10:05
■AddForceで動かそう!
物理エンジンを使って、重量のある世界を構築する場合、ゲームオブジェクトを動かすのに「位置の値を変更する」というやり方はしません。位置の値をいきなり書き換えてしまったら、それはテレポーテーションです。現実世界ではありえませんね。
では、どうやればいいのか。それは、現実世界で物を動かすときにどうするかを想像すればわかります。つまり、「押す」のです。
物理エンジンを利用するゲームオブジェクトには、Rigidbodyがコンポーネントとして組み込まれています。このRigidbodyには、「AddForce」というメソッドが用意されています。これは以下のようなものです。
では、実際に動かしてみましょう。Sphereに設定したスクリプトファイルに、下のようなスクリプトを記述しましょう。これは、キーを押してSphereを動かすためのものです。シーンを実行したら、矢印キーを押して下さい。押している間、Sphereに力が加えられ、ゆっくりとボールが転がっていきます。
では、どうやればいいのか。それは、現実世界で物を動かすときにどうするかを想像すればわかります。つまり、「押す」のです。
物理エンジンを利用するゲームオブジェクトには、Rigidbodyがコンポーネントとして組み込まれています。このRigidbodyには、「AddForce」というメソッドが用意されています。これは以下のようなものです。
《Rigidbody》.AddForce( 《Vector3》 );
非常にシンプルですね。Vector3は加える力のベクトル情報を指定します。このVector3の値を元に、そのゲームオブジェクトに力が加えられます。重力のある世界では、平面上を前後左右に移動することになりますが、この場合はXとZに値を設定すればいいでしょう。またYに値を追加すると、上に移動する(ジャンプする)ことができます。では、実際に動かしてみましょう。Sphereに設定したスクリプトファイルに、下のようなスクリプトを記述しましょう。これは、キーを押してSphereを動かすためのものです。シーンを実行したら、矢印キーを押して下さい。押している間、Sphereに力が加えられ、ゆっくりとボールが転がっていきます。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
#pragma strict function FixedUpdate () { var x:float = Input.GetAxis("Horizontal"); var y:float = Input.GetAxis("Vertical"); rigidbody.AddForce(new Vector3(x, 0, y)); }
※関連コンテンツ
「JavaScriptではじめるUnityプログラミング入門」に戻る