Unityでオブジェクトをスクリプトで変形

未分類

UnityでPrimitive(基本的)な形状のオブジェクトを作成し、変形してみる。

C#コード

空のオブジェクトを作り、以下のコードをアタッチする。

public class Sample2 : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        //円柱を作成
        GameObject NewObject = GameObject.CreatePrimitive(PrimitiveType.Cylinder);
        NewObject.transform.position = new Vector3(0, 0, 0);

        //メッシュフィルターを取得
        Mesh mesh1 = NewObject.GetComponent<MeshFilter>().mesh;
        Vector3[] vertices = mesh1.vertices;

        //メッシュの頂点を移動 X成分が0以上のもの対象
        for (int i = 0; i < vertices.Length; i++)
        {
            if (vertices[i].x > 0)
            {
                vertices[i] += new Vector3(1, 1, 1);
            }
        }

        //移動したメッシュを反映
        mesh1.vertices = vertices;
    }
}

コードの流れは、以下の通り

  • 円柱形のオブジェクトを作り、座標(0,0,0)に配置
  • メッシュフィルターを取得し、頂点の座標を取得
  • 頂点の一部を移動する。この例では、X座標が0より大きいものを対象に(1,1,1)移動。
  • 一部の座標を移動したメッシュ情報を円柱形オブジェクトのメッシュフィルターに反映

実行してみる

まずは変形前のオブジェクトの形

変形した結果が以下の通り

タイトルとURLをコピーしました