LemonteaのUnity部屋

LemonteaのUnity部屋

Unityの使い方とかです~

初めてのスクリプト(1)オブジェクトの移動

こんにちは。レモンティーです。

今回から、後回していたスクリプトをみていきましょう。

まずは、オブジェクトの移動です。

オブジェクトを動かすやり方として、今回は
(A)transformを直接いじる
(B)Rigidbodyで力を加えて演算する

の二種類を紹介します。

(A)transformを直接いじる。

ほぼ全てのオブジェクトはTransformコンポーネントがついています。

f:id:sawalemontea:20170805145346p:plain

これですね。

この、positionの値をスクリプトで直接いじることで、
物体を任意の場所に移動できます。

自分(そのスクリプトがアタッチされているオブジェクト)
の今の場所はtransform.positionと書きます。
また、positionの値はVector3型の変数…つまり、
三次元ベクトルとして扱います。

なので例えば、点(0,4,2)に移動させたければ

transform.position = new Vector3(0,4,2);

のように書きます。

Vector3型は足し引きできますので、

X方向に1動かしたいときは

transform.position += new Vector3(1,0,0);

のように書けばOKです。

(おまけ)
最初にほぼと言いましたように、Transformがないやつもあります。
UIはCanvas上にあるのでTransformがありません。
UIは↓のように動かします。
sawalemounity.hatenablog.com

(B)Rigidbodyで動かす

Rigidbodyをアタッチしたオブジェクトには、
スクリプトで、
力を加えたらどうなるか演算させて動かすこともできます。

自分(そのスクリプトがアタッチされているオブジェクト)
に力を加えるには、
GetComponent().AddForce(Vector3 , ForceMode);
を使います。

なので例えば、

GetComponent<Rigidbody>().AddForce(new Vector3(0,1,0), ForceMode.Force);

の場合、Y軸方向に1の大きさの力が加わります。
Vector3の部分で力のベクトルを指定するわけです。
ここは普通、先にVector3型の変数を作っておいて、それを書きます。


ForceModeは加えるベクトルの種類です。
Force   は力
Acceleration は加速度
Impuls   は撃力
VelocityChange は速度   です。

今まで力、力と言ってきましたが、ほかのやつでも当然動きます。


今回はここまでです。
まあ単体で使うものでもないし、これから頻繁に見かけることになります。
次回はさっそくImputと組み合わせて使っていきます。

Next

sawalemounity.hatenablog.com

関連
今回のスクリプトの使用
sawalemounity.hatenablog.com