【问题标题】:How to move individual parts of Aircraft in unity 3d [closed]如何在统一3d中移动飞机的各个部分[关闭]
【发布时间】:2013-09-04 05:27:07
【问题描述】:

我有一个飞机模型,我可以驾驶它。我想移动飞机的各个部件,如方向舵、螺旋桨、起落架等。并在 Unity 3d 中改变飞机的方向。

【问题讨论】:

  • 这个问题似乎是题外话,因为它不是一个编程问题。

标签: unity3d 3dsmax


【解决方案1】:

如果您的模型有骨架,您可以在统一或在您的建模程序中为骨架父部件制作动画,然后通过脚本触发这些动画。

编辑:这是我发现通过脚本控制网格的东西,您可以更改它以满足您的需求,我仍然说返回建模程序并放入电枢并重新导出它会更容易里面已经有盔甲和动画了,这就是我能帮你的全部了

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

【讨论】:

  • 感谢 JRowan 先生的回答。但我想编写各个部分的脚本而不是动画。通过零件运动,我想改变方向并旋转飞机。如果您能为它提供这样的脚本或指南,那就太好了。谢谢...
  • 我更新了一些代码,我从未尝试过,我在所有模型上都添加了动画并在脚本中制作动画,这样我从answers.unity3d.com/questions/14567/…得到这个更容易
猜你喜欢
  • 1970-01-01
  • 2021-05-22
  • 1970-01-01
  • 1970-01-01
  • 2014-03-08
  • 1970-01-01
  • 2016-08-05
  • 2021-10-17
  • 1970-01-01
相关资源
最近更新 更多