是否有一种更简单的方法可以控制我想在检查器中生成多少敌人,而不是在我的代码中继续复制和粘贴相同的方法,但重命名它。嗯,我认为使用数组(例子):
应该做的但我不知道如何在我的代码中实现它。谢谢,麻烦您了! :)
我的代码:
public GameObject enemy;
// Variable to know how fast we should create new enemies
public float spawnTime = 2;
void Start() {
// Call the 'addEnemy' function every 'spawnTime' seconds
InvokeRepeating ("addEnemy", spawnTime, spawnTime);
}
// New function to spawn an enemy
void addEnemy() {
// Variables to store the X position of the spawn object
// See image below
var x1 = transform.position.x - GetComponent<Renderer> ().bounds.size.x / 2;
var x2 = transform.position.x + GetComponent<Renderer> ().bounds.size.x / 2;
// Randomly pick a point within the spawn object
var spawnPoint = new Vector2 (Random.Range (x1, x2), transform.position.y);
// Create an enemy at the 'spawnPoint' position
Instantiate (enemy, spawnPoint, Quaternion.identity);
}
}
P.S。有人知道如何在退出主摄像机视图后删除生成的对象。 :)
答案 0 :(得分:0)
整个技巧是你必须在视图后面保留一个空的gameObject(用户视图)让它称之为驱逐舰。为Game对象添加一个标签,以便你可以识别与驱逐舰相撞的对象。如果标签是他们有资格被销毁然后使用Destroy(gameObject)应该破坏gameObject。
答案 1 :(得分:0)
我建议您使用Coroutines来控制要生成的对象数量,但我发现使用您的代码可以实现周转。
public int spawnMax = 6, currentTotal = 0;
if (currentTotal >= spawnMax) CancelInvoke("addEnemy");
为了删除摄像机视图之外的对象,我会将一个空的游戏对象作为摄像机的子对象,并且在孩子们中放置对着摄像机视图的边框的对撞机,最后使用标签和OnCollision / OnTrigger用于检测是否有任何对象在外面。