各種の変換(トランスフォーム)
今まで、物体の移動(位置)、回転と拡大縮小をUnityの「transform」コンポーネントを使ってやってきました。

実は裏側でなにが行われているのか、学んでいきましょう。
移動(位置)
一番簡単なのは、「移動」(位置)である。基本的に、メッシュの各頂点を移動させたい量を足すだけで実現できる。学んできた「ベクトルの足し算」を使えば、すぐ実装できる:
|
|
ここで「v'」は移動した頂点で、「v」は元の頂点で、「t」は移動ベクトルである。
練習
MyTransform のスクリプトを作成し、MyCube で作った立方体を移動する。
- 頂点の位置を変えないとけいないので、MyCube の頂点を読み込む(
GetVertices)、書き込むメソッド(SetVertices)を作成してください。 - MyTransform で MyCubeの参照を GetComponent で取得し、頂点を変換する。
- 変換する前の頂点を保管しておきましょう! (そうしないと、戻せなくなります~)
- 移動量(位置)を Inspector で変えられるようにしてください。
MyCube の GetVertices と SetVertices
// メッシュの頂点を返す
public Vector3[] GetVertices()
{
return mesh.vertices;
}
// メッシュの頂点を設定
public void SetVertices(Vector3[] vertices)
{
mesh.vertices = vertices;
mesh.RecalculateNormals(); // 方法ベクトル再計算
}
MyTransform スクリプト
// メッシュの頂点を返す
public Vector3[] GetVertices()
{
return mesh.vertices;
}
// メッシュの頂点を設定
public void SetVertices(Vector3[] vertices)
{
mesh.vertices = vertices;
mesh.RecalculateNormals(); // 方法ベクトル再計算
}
