void OnTriggerEnter(Collider coll) { //웨이포인트 태그가 붙은 게임 오브젝트와 충돌체크 if (coll.CompareTag("WAY_POINT")) { //Debug.Log("arrived at " + waypointIndex); enemySpawner.CreateEnemy(waypointIndex); //현재 타겟 포인트가 마지막 포인트가 아니면 타겟 인덱스를 증가 if (waypointIndex != points.Length - 1) { waypointIndex++; } else { //마지막 웨이포인트라면 스크립트 종료 tr.GetComponent <MovePointToPoint>().enabled = false; } // 다음에 갈 지점과의 각도 측정 if (arrived == false) // 최초 한번만 해야 해서. { arrived = true; Vector3 dir = points[waypointIndex].position - tr.position; //dotValue = Vector3.Dot(dir, tr.forward);// 이렇게 해도 되긴 되는데 .. targetAngle = Vector3.Angle(tr.forward, dir); if (targetAngle < 0) { targetAngle = 360f + targetAngle; } } } }
private void Update() { if (enemyPool.Count <= 10 && gameState == GameState.Play) { Object enemyObj = enemyPrefabs[Random.Range(0, enemyPrefabs.Length)]; Enemy enemy = enemySpawner.CreateEnemy(enemyObj, tankGO.transform); enemyPool.Add(enemy); } }
// Select a EnemySpawner then spawn an enemy void SpawnEnemy() { if (playerHealth.currentHealth <= 0) { return; } int spawnPointIndex = Random.Range(0, enemySpawnPoints.Length); spawner = enemySpawnPoints[spawnPointIndex].GetComponent <EnemySpawner>(); spawner.CreateEnemy(); }
public override void OnStartServer() { base.OnStartServer(); enemy_spawner_ = FindObjectOfType<EnemySpawner>(); for (int i = 0; i < 1; i++) { enemys.Add(enemy_spawner_.CreateEnemy(i)); } StartCoroutine("Room1"); }
public override void OnStartServer() { base.OnStartServer(); enemy_spawner_ = FindObjectOfType<EnemySpawner>(); for (int i = 0; i < 1; i++) { var enemy = enemy_spawner_.CreateEnemy(i); enemy.GetComponent<AI2>().SetRoomName("lastStage_clean"); enemys.Add(enemy); } StartCoroutine("Room1"); }