【发布时间】:2020-07-21 00:23:39
【问题描述】:
我正在开发我的第二个 fps 游戏。
我知道这个问题可能会重复,但我找不到任何解决方法。 因为在我的脚本中似乎一切都很好。
所以,
我有一个场景,其中我有一个空的游戏对象(spawnPoints)。它包含生成敌人的所有生成点。 目的和问题 我不想让敌人重叠。共有6个出生点。如果我把 5 作为生成点的大小。一切正常......即,敌人不会重叠。但是如果我将 7、8 或 9 作为生成点数组的大小。敌人重叠。我正在使用 Physics.overlapsphere 来检测对撞机。
如果没有地方生成,我不想生成敌人。如果没有地方生成,那么我希望敌人等待......直到任何生成点都清晰。
代码
using UnityEngine;
using System.Collections;
public class EnemySpawns :
MonoBehaviour {
public GameObject Enemy;
public Transform[] spawnPoints;
public float spawnTime;
public int maxEnemy = 5;
private int currentEnemy = 0;
bool isSpawn;
public float EnemyRadius = 16f;
void Start(){
isSpawn = false;
InvokeRepeating ("spawnEnemy", spawnTime, 5.4f);
isSpawn = true;
}
public void spawnEnemy(){
for (int i = 0; i < spawnPoints.Length; i++) {
Collider[] cols = Physics.OverlapSphere (spawnPoints [i].transform.position, EnemyRadius);
foreach (Collider hit in cols) {
if (hit.tag == "AI Controller")
{
isSpawn = false;
return;
}
else
{
isSpawn = true;
}
}
}
if (isSpawn == true) {
if (currentEnemy <= maxEnemy) {
Transform currentSpawnPoint = spawnPoints [Random.Range (0, spawnPoints.Length)].transform; //pickrandom
Instantiate (Enemy, currentSpawnPoint.position, currentSpawnPoint.rotation);
currentEnemy++;
}
}
if (currentEnemy == maxEnemy) { //stop spawning enemies
CancelInvoke ();
}}}
【问题讨论】:
-
对不起我的英语,但是“重叠”是指敌人不会停止产卵?
-
你确定标签“AI控制器”与生成的敌人有关联吗?
-
AI Controller 标签链接到敌人。重叠意味着,敌人在同一个生成点被实例化 3-4 次。你的英语很好。
标签: unity3d physics overlap spawn collider