The goal of the game is to survive as long as possible, you start with basic stats which you can upgrade by gaining exp. The more enemies you kill the stronger you become.
The characters are 3D models and animations found on the internet.
Features:
Example code:
using UnityEngine;
using System.Collections;
public class UpgradeManager : MonoBehaviour
{
//--------------------
//PRIVATE VARIABLES
//--------------------
//BASE VALUES
private float _attackSpeed = 1.0f;
private float _reloadSpeed = 1.0f;
private float _extraHealth = 0.0f;
private float _healthRegen = 0.0f;
private float _extraArmor = 0.0f;
private float _armorRegen = 0.0f;
private int _extraAmmo = 0;
//LEVELS OF UPGRADES
private int _attackSpeedLevel = 0;
private int _reloadSpeedLevel = 0;
private int _extraHealthLevel = 0;
private int _healthRegenLevel = 0;
private int _extraArmorLevel = 0;
private int _armorRegenLevel = 0;
private int _extraAmmoLevel = 0;
//MAXIMUM LEVEL
private int _attackSpeedMaxLevel = 10;
private int _reloadSpeedMaxLevel = 10;
private int _extraHealthMaxLevel = 10;
private int _healthRegenMaxLevel = 10;
private int _extraArmorMaxLevel = 10;
private int _armorRegenMaxLevel = 10;
private int _extraAmmoMaxLevel = 10;
//LEVEL MULTIPLIER
private float _attackSpeedValue = 0.9f;
private float _reloadSpeedValue = 0.9f;
private float _extraHealthValue = 10.0f;
private float _healthRegenValue = 0.5f;
private float _extraArmorValue = 5.0f;
private float _armorRegenValue = 0.5f;
private int _extraAmmoValue = 2;
//--------------------
//PUBLIC FUNCTIONS
//--------------------
//FUNCTION TO RESET ALL THE VALUES
public void Reset()
{
_attackSpeedLevel = 0;
_reloadSpeedLevel = 0;
_extraHealthLevel = 0;
_healthRegenLevel = 0;
_extraArmorLevel = 0;
_armorRegenLevel = 0;
_extraAmmoLevel = 0;
}
//FUNCTION TO LEVEL ATTACK SPEED
public bool LevelAttackSpeed()
{
if (_attackSpeedLevel + 1 > _attackSpeedMaxLevel)
{
return false;
}
GameManager.SingleTon().GetExperienceManager().Upgraded();
_attackSpeedLevel++;
return true;
}
//FUNCTION TO LEVEL RELOAD SPEED
public bool LevelReloadSpeed()
{
if (_reloadSpeedLevel + 1 > _reloadSpeedMaxLevel)
{
return false;
}
GameManager.SingleTon().GetExperienceManager().Upgraded();
_reloadSpeedLevel++;
return true;
}
//FUNCTION TO LEVEL MAXIMUM HEALTH
public bool LevelExtraHealth()
{
if (_extraHealthLevel + 1 > _extraHealthMaxLevel)
{
return false;
}
GameManager.SingleTon().GetExperienceManager().Upgraded();
_extraHealthLevel++;
return true;
}
//FUNCTION TO LEVEL HEALTH REGEN
public bool LevelHealthRegen()
{
if (_healthRegenLevel + 1 > _healthRegenMaxLevel)
{
return false;
}
GameManager.SingleTon().GetExperienceManager().Upgraded();
_healthRegenLevel++;
return true;
}
//FUNCTION TO LEVEL MAXIMUM ARMOR
public bool LevelExtraArmor()
{
if (_extraArmorLevel + 1 > _extraArmorMaxLevel)
{
return false;
}
GameManager.SingleTon().GetExperienceManager().Upgraded();
_extraArmor++;
return true;
}
//FUNCTION TO LEVEL ARMOR REGEN SPEED
public bool LevelArmorRegen()
{
if (_armorRegenLevel + 1 > _armorRegenMaxLevel)
{
return false;
}
GameManager.SingleTon().GetExperienceManager().Upgraded();
_armorRegenLevel++;
return true;
}
//FUNCTION TO LEVEL MAXIMUM AMMO
public bool LevelExtraAmmo()
{
if (_extraAmmoLevel + 1 > _extraAmmoMaxLevel)
{
return false;
}
GameManager.SingleTon().GetExperienceManager().Upgraded();
_extraAmmoLevel++;
return true;
}
//RETRIEVE THE ATTACK SPEED
public float GetAttackSpeed()
{
return _attackSpeed * Mathf.Pow(_attackSpeedValue, _attackSpeedLevel);
}
//RETRIEVE THE RELOAD SPEED
public float GetReloadSpeed()
{
return _reloadSpeed * Mathf.Pow(_reloadSpeedValue, _reloadSpeedLevel);
}
//RETRIEVE THE EXTRA HEALTH FOR THE CHARACTER
public float GetExtraHealth()
{
return _extraHealth + (_extraHealthValue * _extraHealthLevel);
}
//RETRIEVE THE HEALTH REGEN
public float GetHealthRegen()
{
return _healthRegen + (_healthRegenValue * _healthRegenLevel);
}
//RETRIEVE THE EXTRA ARMOR
public float GetExtraArmor()
{
return _extraArmor + (_extraArmorValue * _extraArmorLevel);
}
//RETRIEVE THE ARMOR REGEN SPEED
public float GetArmorRegen()
{
return _armorRegen + (_armorRegenValue * _armorRegenLevel);
}
//RETRIEVE THE EXTRA AMMO
public int GetExtraAmmo()
{
return _extraAmmo + (_extraAmmoValue * _extraAmmoLevel);
}
}