2013-08-31 4 views
1

항공기 모델을 가지고 있으며 비행 할 수 있습니다. 나는 방향타, 프로펠러, 랜딩 기어 등과 같은 항공기의 개별 부품을 움직이기를 원한다. Unity 3d에서 항공기의 방향을 변경하십시오.항공기의 개별 부분을 조율로 이동하는 방법 3d

+5

이 질문은 프로그래밍 관련 질문이 아니기 때문에 주제가 아닌 것 같습니다. – Toto

답변

0

모델에 뼈대가있는 경우 뼈대가있는 피어싱 된 조각에 대해 애니메이션이나 모델링 프로그램에서 애니메이션을 만들 수 있으며 스크립트를 통해 해당 애니메이션을 트리거 할 수 있습니다.

EDIT : 내가 스크립트를 통해 메쉬를 제어하기 위해 찾은 점은 필요에 맞게 변경할 수 있습니다. 모델링 프로그램으로 돌아가서 다시 뼈대에 넣고 다시 내보내기가 더 쉬울 것이라고 말합니다. armiture와 애니메이션이 이미 포함되어 있습니다.이게 다 도울 수 있습니다.

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(); 
    } 
} 
+0

답장을 보내 주신 Mr. JRowan에게 감사드립니다. 하지만 개별 부분을 스크립트로 작성하고 애니메이션으로 만들지는 않겠습니다. 부품 이동을 통해 방향을 바꾸고 항공기를 회전시키고 싶습니다. 그러한 스크립트를 제공하거나 가이드 할 수 있다면 친절 할 것입니다. 감사합니다 ... –

+0

일부 코드로 업데이트 한 적이 있습니다. 나는 그것을 시도하지 않았고, 모든 모델에 애니메이션을 넣었으며 스크립트로 애니메이션을 만들었습니다. 그 방법은 훨씬 쉬웠습니다. http://answers.unity3d.com/questions/에서 가져 왔습니다. 14567/editing-mesh-vertices-in-unity.html – JRowan