2016-07-16 7 views
0

Wenn ich mein Fertig instanziiertinstanziiert Fertig Größe ist zu groß Unity C#

 copyOfSpellObject = (GameObject)Instantiate(gameObject, transform.position, transform.rotation); 
     Item_Spell itemSpell = copyOfSpellObject.GetComponent<Item_Spell>(); 
     itemSpell.SpellObject = GetComponent<Item_Spell>().SpellObject; 
     copyOfSpellObject.transform.SetParent(transform, false); 
     copyOfSpellObject.transform.position = Camera.main.ScreenToWorldPoint(new Vector3(transform.position.x, transform.position.y, 0)); 
     copyOfSpellObject.transform.SetParent(transform.parent.parent.parent, false); 

Es wird extrem groß

Normal - http://prntscr.com/btgzg7

Big - http://prntscr.com/btgzke

Warum das so ist? Das Problem tritt nur auf, wenn ich das Spielobjekt als ein Kind zu einem bestimmten Elternteil, genauer gesagt, jedes Elternteil nach diesem wird das Problem einschließlich dieser transform.parent.parent.parent verursachen.

+0

Sie legen zweimal das Elternteil fest. Gibt es einen Grund dafür? Auch der zweite Aufruf sieht seltsam aus, vielleicht möchten Sie stattdessen transform.root verwenden. – Everts

Antwort

0

Klicken Sie auf das Objekt in der Hierarchie, nachdem Sie es instanziiert haben. Sehen Sie in der Eigenschaft 'scale' (in der Transformationskomponente) große Zahlen? Wenn Sie dies tun, versuchen Sie, diese Zahlen auf 1 zu setzen und sehen Sie, ob das die gewünschte Größe ist. Dann setzen Sie einfach den Maßstab des Objekts 1 (oder was auch immer Größe, die Sie mögen) im Code wie folgt aus:

copyOfSpellObject = (GameObject)Instantiate(gameObject, transform.position, transform.rotation); 
    Item_Spell itemSpell = copyOfSpellObject.GetComponent<Item_Spell>(); 
    itemSpell.SpellObject = GetComponent<Item_Spell>().SpellObject; 
    copyOfSpellObject.transform.SetParent(transform, false); 
    copyOfSpellObject.transform.position = Camera.main.ScreenToWorldPoint(new Vector3(transform.position.x, transform.position.y, 0)); 
    copyOfSpellObject.transform.SetParent(transform.parent.parent.parent, false); 
    copyOfSpellObject.transform.localScale = new Vector3(1,1,1); 

Die Transformation neigt wirklich seltsam zu erhalten, wenn die ursprünglich ohne einen Elternteil erstellt eine instanzierte Objekt parenting.

Lassen Sie mich wissen, wenn dies hilft

+0

Dieses Problem löst mein Problem, wenn ich das Elternelement als "transform.root" einstelle, ist es immer noch zu groß. – PreqlSusSpermaOhranitel

+0

@preqlsusspermaohranitel Wo haben Sie das eigentliche Fertighaus erstellt? Hast du gerade das Objekt (ohne Eltern) erstellt und als Prefab gespeichert? Denn wenn Sie das getan haben, ist das wahrscheinlich Ihr Problem. Sie sollten das Objekt innerhalb des übergeordneten Elements (im Editor) erstellen, die Größe an die gewünschte Größe anpassen und es dann als ein Prefab speichern. Wenn Sie das Objekt instanziieren, sollte alles gleich bleiben. –