Improve NPC spawning logic to prioritize stable tiles and ensure valid spawn positions
This commit is contained in:
@@ -213,9 +213,22 @@ namespace Infrastructure.Unity
|
||||
|
||||
private void SpawnNpc()
|
||||
{
|
||||
var spawnPos = new Vector3(levelGenerator.GridSizeX / 2f, 7f, levelGenerator.GridSizeY / 2f);
|
||||
var validTiles = _allTiles.FindAll(t => t.Floor == 0 && t.CurrentState == TileState.Stable);
|
||||
|
||||
if (validTiles.Count == 0)
|
||||
{
|
||||
validTiles = _allTiles.FindAll(t => t.CurrentState == TileState.Stable);
|
||||
}
|
||||
|
||||
if (validTiles.Count == 0) return;
|
||||
|
||||
var randomTile = validTiles[Random.Range(0, validTiles.Count)];
|
||||
|
||||
if (!_tileViews.TryGetValue(randomTile.Id, out var tileView)) return;
|
||||
if (!tileView) return;
|
||||
|
||||
var spawnPos = tileView.transform.position + Vector3.up * 5f;
|
||||
|
||||
// 30% chance for Hunter if player available
|
||||
if (_playerInstance && hunterNpcPrefab && Random.value < 0.3f)
|
||||
{
|
||||
var hunter = Instantiate(hunterNpcPrefab, spawnPos, Quaternion.identity);
|
||||
|
||||
Reference in New Issue
Block a user