物理エンジンの利用 (2/4)
作成:2014-10-04 10:22
更新:2014-10-04 10:31
更新:2014-10-04 10:31
■AddForceで力を加える
物理エンジンを設定したゲームオブジェクトを動かす場合、translateは使えません。
いえ、使えるんですが、物理的な性質を持つ「物」を瞬間移動してしまうのは方法としてまずいでしょう。
ではどうするか。それは、「押す」んです。ゲームオブジェクトに力を加える事で、それを動かすことができます。これには「AddForce」というメソッドを使います。
AddForceは、物理エンジンであるRigidbodyクラスのメソッドです。このRigidbodyは、ゲームオブジェクトにRigidbodyが組み込んであれば、そのまま「rigidbody」というプロパティを指定して、組み込んでいるインスタンスを取り出すことができます。
引数にはVector3インスタンスが渡されます。このVector3の数値が、それぞれの方向に加えられる力になります。下に、実際の利用例を挙げておきます。これで、矢印キーなどを押してSphereを前後左右に動かすことができます。意外と簡単でしょう?
ここでは、AddForceの処理を、Updateではなく、FixedUpdateで行っています。これは一定間隔で呼び出されるメソッドで、主に物理的な計算処理などのために利用されます。AddForceは、単に力学的な力を加えるためのもので、これ自身で動かすアニメーションなどの表示をするわけではないので、UpdateではなくFixedUpdateに書いておくといいでしょう。
いえ、使えるんですが、物理的な性質を持つ「物」を瞬間移動してしまうのは方法としてまずいでしょう。
ではどうするか。それは、「押す」んです。ゲームオブジェクトに力を加える事で、それを動かすことができます。これには「AddForce」というメソッドを使います。
《Rigidbody》.AddForce(《Vector3》);AddForceは、物理エンジンであるRigidbodyクラスのメソッドです。このRigidbodyは、ゲームオブジェクトにRigidbodyが組み込んであれば、そのまま「rigidbody」というプロパティを指定して、組み込んでいるインスタンスを取り出すことができます。
引数にはVector3インスタンスが渡されます。このVector3の数値が、それぞれの方向に加えられる力になります。下に、実際の利用例を挙げておきます。これで、矢印キーなどを押してSphereを前後左右に動かすことができます。意外と簡単でしょう?
ここでは、AddForceの処理を、Updateではなく、FixedUpdateで行っています。これは一定間隔で呼び出されるメソッドで、主に物理的な計算処理などのために利用されます。AddForceは、単に力学的な力を加えるためのもので、これ自身で動かすアニメーションなどの表示をするわけではないので、UpdateではなくFixedUpdateに書いておくといいでしょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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));
}
}
※関連コンテンツ