1
我正在嘗試製作類似於十字路口類似遊戲的遊戲,就像無限一代/敵人一代一樣。在我的代碼中,一切似乎都能和地面和敵人一起工作,並且在我玩的時候它就可以工作。但我不能讓新生敵人重複自己。我試圖把「Invoke重複函數」放在void Start,void Update和for循環中。但它不起作用。它只發送一個敵人。如何在Unity3D中調用重複並銷燬對象(5.1)
然後我有問題引用/找到新創建的對象(飛機/敵人),所以我可以摧毀他們,當他們不在屏幕上。
我必須以錯誤的方式構建代碼,但我無法弄清楚。
public class levelGenerationScrip : MonoBehaviour {
public GameObject greenPlane;
public GameObject bluePlane;
public GameObject brownPlane;
public GameObject testEnemy;
int firstRand;
int secondRand;
int distPlayer = 12 ;
int enemyDist= 7;
Vector3 intPos = new Vector3 (0,0,0);
Vector3 enemyPos = new Vector3 (0,0,0);
Vector3 enemyPos2 = new Vector3 (0,0,0);
void Start() {
}
void Update() {
if (Input.GetKeyDown("w"))
{
firstRand = Random.Range(1,4);
if(firstRand == 1)
{
secondRand = Random.Range(1,1);
for(int i = 0; i < secondRand; i++)
{
intPos = new Vector3(-2.3f,0.5f,distPlayer);
enemyPos = new Vector3 (7,1.51f,enemyDist);
distPlayer += 1 ;
enemyDist += 1;
GameObject greenIns = Instantiate(greenPlane) as GameObject;
greenIns.transform.position = intPos ;
GameObject testEn = Instantiate (testEnemy) as GameObject;
testEn.transform.position = enemyPos ;
testEn.GetComponent<Rigidbody>().AddForce(new Vector3 (-350, 0, 0));
//InvokeRepeating ("testEn",1,1.5f);
}
}
if(firstRand == 2)
{
secondRand = Random.Range(1,1);
for(int i = 0; i < secondRand; i++)
{
intPos = new Vector3(-2.3f,0.5f,distPlayer);
enemyPos2 = new Vector3 (-11,1.51f,enemyDist);
distPlayer += 1 ;
enemyDist += 1;
GameObject blueIns = Instantiate(bluePlane) as GameObject;
blueIns.transform.position = intPos ;
GameObject testEn = Instantiate (testEnemy) as GameObject;
testEn.transform.position = enemyPos2 ;
testEn.GetComponent<Rigidbody>().AddForce(new Vector3 (+350, 0, 0));
}
}
if(firstRand == 3)
{
secondRand = Random.Range(1,1);
for(int i = 0; i < secondRand; i++)
{
intPos = new Vector3(-2.3f,0.5f,distPlayer);
enemyPos = new Vector3 (7,1.51f,enemyDist);
distPlayer += 1 ;
enemyDist += 1;
GameObject brownIns = Instantiate(brownPlane) as GameObject;
brownIns.transform.position = intPos ;
GameObject testEn = Instantiate (testEnemy) as GameObject;
testEn.transform.position = enemyPos2 ;
testEn.GetComponent<Rigidbody>().AddForce(new Vector3 (+400, 0, 0));
}
}
}
}
}
嗨!在我實例化它們之後,我想繼續使敵人在同一個位置。我試圖用「InvokeRepeating(」testEn「,1,1.5f);」但我想它只適用於函數..thnx的列表幫助。 – user5024367
是的,你不能通過一個gameobject調用它不知道你想用它做什麼。 – maksymiuk