2015-10-16 34 views
1

我有用於生成向左,向右和向下移動的旋轉球的代碼。生成點(空物體)設置在地面以上約3個單位,因此它會掉落到地面並向左或向右移動。 我面臨的問題是,在我摧毀了預製的克隆並重置它在原來的位置產卵,並期望它落到地面並移動,但它只在原始位置產生,它不會落入地面。任何幫助將不勝感激。謝謝。 `在銷燬預製件然後重新創建預製件後,新的克隆對象不會移動

public class spawnLemmings : MonoBehaviour { 

//this is the number of lemmings that will spawn 
private int numLemming = 6; 

//Creating a prefab gameObject to attach the prefab to 
public GameObject prefab; 

// Use this for initialization 
void Start() { 
    Spawn(); 
} 
void FixedUpdate() 
{ 
    Reset(); 
} 

void Spawn() 
{ 
    //A for loop to create desired number of Lemmings 
    for (int i = 0; i < numLemming; i++) 
    { 
     //This is where the game object is being created 
     prefab = (GameObject)Instantiate(prefab, transform.position, Quaternion.identity); 


     //This sets the speed of lemming. 
     //prefab.GetComponent<lemmingMovement>().speed = Random.Range(3.0f, 4.0f); ///speed = 2.0f; 

     //This resets onGround to false 
     //prefab.GetComponent<lemmingMovement>().OnGround(); 
    } 
} 
void Reset() 
{ 
    if (Input.GetKeyDown("r")) 
    { 
     GameObject[] lems = GameObject.FindGameObjectsWithTag("Lemmings"); 
     foreach (GameObject lem in lems) 
     { 
      Destroy(lem); 
     } 
     Spawn(); 
    } 
} 
} 

`

+0

對不起,我忘了刪除FixedUpdate(),我只是測試,看看是否是造成問題。我的代碼使用Update()。 –

回答

2
prefab = (GameObject)Instantiate(prefab, transform.position, Quaternion.identity); 

你分配你到預設創建您使用克隆對象

試試這個

//This is where the game object is being created 
GameObject o = (GameObject)Instantiate(prefab, transform.position, Quaternion.identity); 
+0

謝謝,工作。 –

+0

歡迎。您可以將此問題標記爲解決方案,將其選爲答案 – gin

0

從這個新對象我可以收集什麼,我在下面陳述 -

  1. 我不知道你的整個代碼是如何工作的,但是從意見我想你應該通過取消註釋代碼設置的速度 -

    //This sets the speed of lemming. 
    //prefab.GetComponent<lemmingMovement>().speed = Random.Range(3.0f, 4.0f); ///speed = 2.0f; 
    
  2. 如果對象是一個剛體,那麼檢查新創建的預製件/克隆是否也有剛體。有時候我忘了在最新的變化之後更新我的預製件。

相關問題