Files
Gnome-s-Bounty/Assets/Scripts/Enemies/EnemySpawner.cs
T
vova ad6388f330 Refactor player and enemy scripts; remove unused classes and improve initialization
- Added base initialization call in PlayerController.
- Changed player reference in EnemyAI to be serialized for better inspector visibility.
- Ensured characters are initialized upon spawning in EnemySpawner.
- Removed obsolete EnemyAI and Chest scripts to streamline codebase.
- Added KeyChest script for key collection functionality.
- Introduced new meta files for better organization and tracking.
- Created launch configuration for Unity debugging.
2026-06-20 18:39:30 +03:00

60 lines
1.5 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemySpawner : MonoBehaviour
{
[SerializeField]
private GameObject _prefab;
[SerializeField]
private int _maxCharacters=1;
[SerializeField]
private Transform _spawnPoint;
private int _respawnTimeout = 4;
private float _respawnElementTimer;
private List<Character> _characters;
// Start is called before the first frame update
private void Start()
{
if(_spawnPoint==null)
{
_spawnPoint=gameObject.transform;
}
_characters=new List<Character>();
}
// Update is called once per frame
private void Update()
{
if(_characters.Count<_maxCharacters)
{
_respawnElementTimer -= Time.deltaTime;
if (_respawnElementTimer <= 0)
{
_respawnElementTimer = _respawnTimeout;
var prefab= Instantiate(_prefab, _spawnPoint.position, _spawnPoint.rotation);
var character=prefab.GetComponent<Character>();
character.Init();
character.OnCharacterDeath+=OnCharacterDeath;
_characters.Add(character);
}
return;
}
}
private void OnCharacterDeath(object sender, EventArgs e)
{
var character=(sender as Character);
character.OnCharacterDeath-=OnCharacterDeath;
_characters.Remove(character);
Destroy(character.gameObject);
}
}