1

私は航空機モデルを持っていて、それを飛ばすことができます。ラダー、プロペラ、着陸装置など、航空機の個々のパーツを動かしたいです。Unity 3d で航空機の方向を変更します。

4

1 に答える 1

0

モデルにアーマチュアがある場合、Unity またはモデリング プログラムでアーマチュアの親ピースのアニメーションを作成し、スクリプトを使用してそれらのアニメーションをトリガーできます。

編集:スクリプトを介してメッシュを制御するために見つけたものがあります。ニーズに合わせて変更できます。それでも、モデリングプログラムに戻ってアーマチュアを入れ、アーマチュアで再エクスポートする方が簡単だと言います。既にアニメーションが含まれています。私がお手伝いできるのはこれだけです

using UnityEngine;
using System.Collections;

[ExecuteInEditMode]

public class VertHandler : MonoBehaviour 
{
    Mesh mesh;
    Vector3[] verts;
    Vector3 vertPos;
    GameObject[] handles;

    void OnEnable()
    {
       mesh = GetComponent<MeshFilter>().mesh;
       verts = mesh.vertices;
       foreach(Vector3 vert in verts)
       {
         vertPos = transform.TransformPoint(vert);
         GameObject handle = new GameObject("handle");
         handle.transform.position = vertPos;
         handle.transform.parent = transform;
         handle.tag = "handle";
         //handle.AddComponent<Gizmo_Sphere>();
         print(vertPos);
       }
    }

    void OnDisable()
    {
       GameObject[] handles = GameObject.FindGameObjectsWithTag("handle");
       foreach(GameObject handle in handles)
       {
         DestroyImmediate(handle);    
       }
    }

    void Update()
    {
       handles = GameObject.FindGameObjectsWithTag ("handle");
       for(int i = 0; i < verts.Length; i++)
       {
         verts[i] = handles[i].transform.localPosition;   
       }
       mesh.vertices = verts;
       mesh.RecalculateBounds();
       mesh.RecalculateNormals();
    }
}
于 2013-08-31T19:51:02.780 に答える