我正在用Unity 3D制作我的第一个游戏,有点像塔防游戏。我已经导入了一个塔的Fbx模型,并将其附加到预制件。现在我想让塔的喷嘴在敌人经过时旋转并跟随敌人。在我导入的fbx模型中,我有两个多边形网格,一个用于固定的塔的底部,另一个用于将旋转的塔的顶部。现在我试着用这两个网格创建两个不同的gameObject,但是如果我把它们放在同一个点上,它们就会重叠。所以我必须手动对齐,这样喷嘴才能正确地位于底座上。我想知道是否有任何其他方法,使整个塔留下来是一个gameObject,我可以旋转上部。
发布于 2012-09-04 09:24:43
我确实设法解决了我的问题。不确定是否是最好的方法,但它是有效的。
为了升级塔和改造喷嘴部分,我基本上做到了这一点。
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);
}
}
}发布于 2012-09-04 03:00:27
您可以创建GameObjects的层次结构;您将有一个代表塔的父GameObject和两个子塔,即您旋转其中一个。请注意,子代的坐标将与父代的坐标相关,因此您在子代上进行的任何“混乱”手动校准都将包含在内。
或者,更复杂的是,可以仅创建一个具有动画的网格,并将其应用于一个GameObject。
https://stackoverflow.com/questions/12252134
复制相似问题