在unity3D中旋转塔喷嘴网格



我正在制作我在Unity 3D中的第一款游戏,有点像塔防游戏。我已经导入了一个Fbx模型的塔,并将其连接到一个预制件上。现在我想让塔的喷嘴旋转,并在敌人经过时跟随敌人。在我导入的fbx模型中,我得到了两个多边形网格,一个用于固定的塔的底部,另一个用于将旋转的塔的顶部。现在我试着用这两个网格创建两个不同的gameObject,但若我把它们放在同一点上,它们就会重叠。所以我必须手动对齐,使喷嘴正确地位于底座上方。我想知道是否有其他方法可以让整个塔保留为一个游戏对象,我可以旋转上部。

我确实设法解决了我的问题。不确定这是否是最好的方法,但它有效。

为了升级塔架,只改造喷嘴部分,我基本上就是这么做的。

public class tryFbx : MonoBehaviour {
    public GameObject[] ModelPrefab;
    GameObject modelInstance;
    Renderer rn = new Renderer();
    // Attaching the model to prefab at runtime by creating a array of prefabs
    public void AttachModelToPrefab(GameObject modelPrefab) {
       modelInstance = GameObject.Instantiate(modelPrefab) as GameObject;
       modelInstance.transform.position = transform.position;
       modelInstance.transform.rotation = transform.rotation;
       // Attach the model instance to the prefab shell
       modelInstance.transform.parent = gameObject.transform;
   }
    void Start () {
    }
    // Update is called once per frame
    void Update () {
            if (GameManager.upgrade){
            AttachModelToPrefab(ModelPrefab[GameManager.towerUpgradeLevel]);
            foreach ( Renderer r in modelInstance.GetComponentsInChildren<Renderer>()){
                    // "polySurface98" is the name of the mesh I want to rotate. The tower and its upgrade have the same name.
                    if (r.name == "polySurface98") 
                    rn = r; 
             }
        // apply any transformation to the partial fbx
        rn.transform.Translate(1,1,1);
       }
    }
}

您可以创建GameObjects的层次结构;你将有一个代表塔的父GameObject和两个子GameObject,因为你旋转了其中一个。请注意,孩子的坐标将与父母的坐标相关,因此您在孩子身上进行的任何"混乱"的手动校准都将包含在内。

或者,更复杂的是,您只能创建一个具有动画的网格,并将其应用于一个GameObject。

相关内容

  • 没有找到相关文章

最新更新