2014-11-06 25 views
2

我想要一個gameObject添加instanciatetd對象作爲他的chiled預製件。 ,所以我寫了這個代碼:Instanciate在Unity3D作爲孩子的預製

public class TgtGenerator : MonoBehaviour { 

public SpriteRenderer spriteTgt; 

public Sprite[] targets;public SpriteRenderer spriteTgt; 

// Use this for initialization 
void Start() { 
} 

// Update is called once per frame 
void Update() { 
    generateRandTgt(); 
} 


void generateRandTgt(){ 
    SpriteRenderer tgt = GameObject.Instantiate (spriteTgt, getRandPosition(), Quaternion.identity)as SpriteRenderer; 
    tgt.sprite = randSprite(); 
} 


Sprite randSprite(){ 
    var length = targets.Length-1; 
    Debug.Log (Random.Range(0,length)); 
    return targets[Random.Range(0,length)]; 
} 


Vector3 getRandPosition(){ 
    float xScale = gameObject.transform.localScale.x/2; 
    float yScale = gameObject.transform.localScale.y/2; 

    float x = Random.Range(-xScale,xScale); 
    float y = Random.Range(-yScale,yScale); 
    float z = 0; 

    return new Vector3 (x, y, z); 
} 

實例化對象從像我想的預製得到他的大小。 但問題是它在水印的根節點實例化,因此它們不會像我想要的那樣放置在遊戲對象座標中。

當我剛instaciate行之後添加此行代碼:

tgt.transform.parent = gameObject.transform; 

它產生作爲一個孩子像我想,但它得到巨大的倒掛。 我應該如何管理?

+0

你是什麼巨大的意思是倒掛 – 2014-11-06 13:39:00

+1

檢查,如果父遊戲對象進行縮放或旋轉,如果這樣的影響的孩子gameobjects – 2014-11-06 13:39:10

+0

@MasihAkbari如果我想instanciated預製是一個孩子,但與他自己的縮放,但隨着他的父親的旋轉?我該怎麼做? – 2014-11-06 13:41:19

回答

2

嘗試使用這種給力的孩子有它自己的規模是孩子後:

var localScale = child.transform.localScale; // store original localScale value 
child.transform.parent = parent; 
child.transform.localScale = localScale; // force set