libro
www.tuyano.com
JavaScriptではじめるUnityプログラミング入門

物理エンジンと衝突判定 (2/4)

作成:2014-05-31 09:57
更新:2014-05-31 10:05

■AddForceで動かそう!

物理エンジンを使って、重量のある世界を構築する場合、ゲームオブジェクトを動かすのに「位置の値を変更する」というやり方はしません。位置の値をいきなり書き換えてしまったら、それはテレポーテーションです。現実世界ではありえませんね。

では、どうやればいいのか。それは、現実世界で物を動かすときにどうするかを想像すればわかります。つまり、「押す」のです。

物理エンジンを利用するゲームオブジェクトには、Rigidbodyがコンポーネントとして組み込まれています。このRigidbodyには、「AddForce」というメソッドが用意されています。これは以下のようなものです。
《Rigidbody》.AddForce( 《Vector3》 );
非常にシンプルですね。Vector3は加える力のベクトル情報を指定します。このVector3の値を元に、そのゲームオブジェクトに力が加えられます。重力のある世界では、平面上を前後左右に移動することになりますが、この場合はXZに値を設定すればいいでしょう。またYに値を追加すると、上に移動する(ジャンプする)ことができます。

では、実際に動かしてみましょう。Sphereに設定したスクリプトファイルに、下のようなスクリプトを記述しましょう。これは、キーを押してSphereを動かすためのものです。シーンを実行したら、矢印キーを押して下さい。押している間、Sphereに力が加えられ、ゆっくりとボールが転がっていきます。

※プログラムリストが表示されない場合

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プログラミング入門」に戻る