物理エンジンの利用 (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)); } }
※関連コンテンツ