位置を扱うpositionプロパティに設定されているのは、「Vector3」というクラスのインスタンス。
三次元に関する値はVector3を使えばだいたいOKらしい。
三次元に関する値はVector3を使えばだいたいOKらしい。
GameObjectのpositionのxやy、zなどの値を変更しても、GameObjectの位置は変わらない。
tansform.position.xの値を変更してもX軸の位置は移動しない。
positionの値は、現在の位置をリアルタイムに管理する機能を持っていないので。
単に「今の値を取り出すだけ」。
動かす方法は二つあり、一つは「Translate」メソッドを使うこと。
※Vector3に設定するのは、「移動する位置」ではなくて、「移動する幅」である。
tansform.position.xの値を変更してもX軸の位置は移動しない。
positionの値は、現在の位置をリアルタイムに管理する機能を持っていないので。
単に「今の値を取り出すだけ」。
動かす方法は二つあり、一つは「Translate」メソッドを使うこと。
<GameObjectのTransformインスタンス>.Translate(<動かす幅をまとめたVector3インスタンス>); (例) Translate(new Vector3(1, 2, 3));
※Vector3に設定するのは、「移動する位置」ではなくて、「移動する幅」である。
public class myscript : MonoBehaviour { //このクラスで使う値をずっと保管しておくフィールド //フィールドに保管しておかないとUpdate終了時に消えてしまう int counter = 0; float plus = 0.1f; void Start () { } void Update () { Vector3 p = new Vector3 (0, 0, plus); transform.Translate (p); counter++; if (counter == 100) { counter = 0; plus *= -1; } } }
positionプロパティに設定されているVector3の値(x, y, z)を変更してもゲームオブジェクトは動かないが、Vector3インスタンスを用意してpositionプロパティのインスタンスそのものを変更してしまえば、ちゃんとそれにあわせて位置も変更される。
zvalueの値を0.1ずつ増減してはVector3インスタンスを作成し、transform.positionに代入する、ということをUpdateが呼び出されるごとに行っている。
public class myscript : MonoBehaviour { float zvalue = 0f; int plusminus = 1; void Start () { } void Update () { zvalue += 0.1f * plusminus; Vector3 p = new Vector3 (0, 0, zvalue); transform.position = p; if (zvalue > 10) { plusminus = -1; } if (zvalue < 0) { plusminus = 1; } } }
「向き」に関するプロパティ。
値はVector3インスタンス。
向きを変更する、つまり「回転させる」には、下記の二つの方法がある。
値はVector3インスタンス。
向きを変更する、つまり「回転させる」には、下記の二つの方法がある。
- rotationの値に新しいVector3インスタンスを設定する
- Rotateというメソッドを使う
<動かしたいGameObjectのTransformインスタンス>.Rotate (動かす角度をまとめたVector3インスタンス);
public class myscript : MonoBehaviour { void Start () { } void Update () { var v = new Vector3 (0.1f, 0.1f, 0.1f); transform.Rotate (v); } }
Vector3は、位置を指定するものというわけではない。
Vector3に保管されるx, y, zの各値は、単なる値に過ぎず、これを受け取ったメソッドやプロパティがどう解釈するかで、それが「位置の値」となったり、「回転する角度」を示すものとして扱われる。
Vector3に保管されるx, y, zの各値は、単なる値に過ぎず、これを受け取ったメソッドやプロパティがどう解釈するかで、それが「位置の値」となったり、「回転する角度」を示すものとして扱われる。
localScaleは、大きさに関するプロパティ。
Vector3インスタンスを値として保管している。
大きさについては、位置や向きのように「決まっただけ大きくする」といったメソッドは用意されていないので、大きさを変更した場合には、localScaleプロパティに新たなVector3インスタンスを設定すること。
Vector3インスタンスを値として保管している。
大きさについては、位置や向きのように「決まっただけ大きくする」といったメソッドは用意されていないので、大きさを変更した場合には、localScaleプロパティに新たなVector3インスタンスを設定すること。
コメントをかく