我在Unity 3D中制作了第一款类似塔防游戏的游戏。我已经导入塔的Fbx模型并将其附加到预制件上。现在我希望塔的喷嘴在敌人经过时旋转并跟随敌人。 在我导入的fbx模型中,我得到了两个多边形网格,一个用于固定塔架的底座,另一个用于塔架顶部将旋转。现在我尝试使用这两个网格创建两个不同的gameObject但是如果我将它们放在相同的点上它们重叠。所以我必须手动对齐,使喷嘴正确地放在底座上。 我想知道是否有任何其他方式使整个塔保持是一个游戏对象,我可以旋转上半部分。
答案 0 :(得分:1)
我确实设法解决了我的问题。不确定是否是最好的方式,但它确实有效。
要升级塔并仅转换喷嘴部件,我基本上就这样做了。
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);
}
}
}
答案 1 :(得分:0)
您可以创建GameObjects的层次结构;你将有一个父游戏对象代表塔和2个孩子,因为你旋转其中一个。请注意,孩子的坐标将与父母的坐标相关,因此您对儿童的任何“杂乱”手动校准都将被包含。
或者,更复杂的是,您只能创建一个具有动画的网格并将其应用于一个GameObject。