Closed MikeMMattinson closed 2 months ago
public void CalculateEnemyStats(int playerLevel, int playerScore, int playerAttack, int playerDefense,
out int enemyLevel, out int enemyAttack, out int enemyDefense)
{
// Initialize enemy stats to default values
enemyLevel = 1;
enemyAttack = 2;
enemyDefense = 1;
// Calculate base enemy level based on player level and score
int baseEnemyLevel = Mathf.Clamp(playerLevel + Mathf.FloorToInt(playerScore / 100), 1, 7);
// Add a random factor for enemy level variation (+/- 1)
enemyLevel = Mathf.Clamp(baseEnemyLevel + Random.Range(-1, 3), 1, 7);
// Calculate enemy attack and defense based on player attack and defense
enemyAttack = Mathf.Clamp(playerAttack + (enemyLevel * 2), 2, 20);
enemyDefense = Mathf.Clamp(playerDefense + (enemyLevel * 1), 1, 15);
}
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
public class EnemySpawner : MonoBehaviour
{
[SerializeField] List<Transform> enemySpawnPoints;
[SerializeField] StateManager stateManager;
[SerializeField] List<GameObject> enemies;
protected int numberOfSpawns;
private Player player;
GameObject enemyRef;
void Start()
{
stateManager = FindObjectOfType<StateManager>();
int randomEnemyIndex;
if (stateManager.gameEnded != true)
{
numberOfSpawns = enemySpawnPoints.Count;
for (int i = 0; i < numberOfSpawns; i++)
{
//retrieving spawn point
Transform spawnPoint = enemySpawnPoints[i];
if (i >= 0 && i < 3) // First three spawn points
{
// Randomly select between level 1 and level 2 enemy
randomEnemyIndex = Random.Range(0, 2); // 0 or 1
}
else
{
// Randomly select from all available enemies for other spawn points
randomEnemyIndex = Random.Range(0, enemies.Count);
}
// Create enemy instance
enemyRef = (GameObject)Resources.Load("Enemy");
GameObject enemyInstance = Instantiate(enemyRef, spawnPoint.position, spawnPoint.rotation);
Enemy enemyComponent = enemyInstance.GetComponent<Enemy>();
// set player reference
if (enemyComponent != null)
{
enemyComponent.SetSpawnPosition(enemyComponent.transform.position);
//enemyComponent.SetPlayerReference(player);
if(i<3){
enemyComponent.SetRespawn(false);
}
// Get player reference
player = FindObjectOfType<Player>();
// Get a reference to the GameManager
GameManager gameManager = FindObjectOfType<GameManager>();
// Calculate enemy stats based on player stats
int playerLevel = player.GetLevel();
int playerScore = player.score;
int playerAttack = player.GetAttack();
int playerDefense = player.GetDefense();
int enemyLevel, enemyAttack, enemyDefense;
gameManager.CalculateEnemyStats(playerLevel, playerScore, playerAttack, playerDefense,
out enemyLevel, out enemyAttack, out enemyDefense);
// Set enemy stats
enemyComponent.SetLevel(enemyLevel);
enemyComponent.SetAttack(enemyAttack);
enemyComponent.SetDefense(enemyDefense);
// set enemy color and health
enemyComponent.SetCapability();
}
else
{
Debug.LogWarning("Enemy component not found on instantiated enemy!");
}
}
}
}
// Function to calculate enemy stats based on player stats
}
This game, fix the following:
4 maps = GAME OBJECTIVE:
What is the final leaderboard score? (a) number of kills or (b) time to complete? Answer: b.
---FUTURE GAME___ Can player die and respawn? Answer: yes, back at single room with same defense and attack but health is reset to full health. Need to keep track of how many times player died. Leaderboard will show anyone that has completed the game and number of deaths.