我正在制作我在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。