我希望gameObject
添加instanciatetd对象prom预制件作为他的胆汁。
所以我写了这段代码:
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);
}
实例化的对象正在从我想要的预制件中获得他的大小。 但问题是它是否在hirarchy的根节点处实现,因此它们不像我想的那样放在gameobject坐标内。
当我在instaciate line之后添加这行代码时:
tgt.transform.parent = gameObject.transform;
它生成像我想要的孩子,但它变得巨大而且颠倒了。
我该如何管理?
答案 0 :(得分:2)
尝试使用此方法强迫孩子在成为孩子后拥有自己的规模:
var localScale = child.transform.localScale; // store original localScale value
child.transform.parent = parent;
child.transform.localScale = localScale; // force set