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

物理エンジンの利用 (2/4)

作成:2014-10-04 10:22
更新:2014-10-04 10:31

■AddForceで力を加える

物理エンジンを設定したゲームオブジェクトを動かす場合、translateは使えません。

いえ、使えるんですが、物理的な性質を持つ「物」を瞬間移動してしまうのは方法としてまずいでしょう。

ではどうするか。それは、「押す」んです。ゲームオブジェクトに力を加える事で、それを動かすことができます。これには「AddForce」というメソッドを使います。

《Rigidbody》.AddForce(《Vector3》);

AddForceは、物理エンジンであるRigidbodyクラスのメソッドです。このRigidbodyは、ゲームオブジェクトにRigidbodyが組み込んであれば、そのまま「rigidbody」というプロパティを指定して、組み込んでいるインスタンスを取り出すことができます。

引数にはVector3インスタンスが渡されます。このVector3の数値が、それぞれの方向に加えられる力になります。下に、実際の利用例を挙げておきます。これで、矢印キーなどを押してSphereを前後左右に動かすことができます。意外と簡単でしょう?

ここでは、AddForceの処理を、Updateではなく、FixedUpdateで行っています。これは一定間隔で呼び出されるメソッドで、主に物理的な計算処理などのために利用されます。AddForceは、単に力学的な力を加えるためのもので、これ自身で動かすアニメーションなどの表示をするわけではないので、UpdateではなくFixedUpdateに書いておくといいでしょう。

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

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

using UnityEngine;
using System.Collections;

public class PhysicsObj : MonoBehaviour {

    void Start () {
    
    }
    
    void FixedUpdate() {
        float x = Input.GetAxis("Horizontal");
        float y = Input.GetAxis("Vertical");
        rigidbody.AddForce(new Vector3(x, 0, y));
    }
}

※関連コンテンツ

「C#ではじめるUnityプログラミング入門」に戻る