A 3D tank combat game developed in Unity featuring multi-level progression, enemy AI, difficulty selection, scoring, pickups, and a final boss battle.
Unity version: 2022.3.62f3 LTS
Language: C#
Rendering: Universal Render Pipeline (URP)
Tanks Battle Game is a single-player 3D action game in which the player controls a tank, fights AI-controlled enemies, collects pickups, and progresses through three combat levels.
The project focuses on gameplay programming and game-system integration, including player controls, enemy behavior, projectile combat, health, scoring, difficulty scaling, scene progression, UI, audio, and win/lose states.
- Player tank movement using physics-based
Rigidbodymovement - Shooting with projectile ownership and collision-based damage
- Enemy detection, pursuit, rotation, and distance-based combat behavior
- Enemy firing based on range, angle, and cooldown
- Three selectable difficulty levels: Easy, Normal, and Hard
- Difficulty-based enemy movement speed and detection range
- Health system with damage and healing
- Health pickups
- Temporary speed-boost pickups
- Persistent score system across gameplay scenes
- Multi-level progression
- Boss encounter in the final level
- Win, game-over, and restart flow
- Music and sound-effect support
- In-game UI using TextMesh Pro
| Level | Encounter |
|---|---|
| Level 1 | 2 enemy tanks |
| Level 2 | 3 enemy tanks |
| Level 3 | Final boss battle |
After all enemies in a level are defeated, the game automatically advances to the next scene. Completing Level 3 finishes the game.
| Action | Controls |
|---|---|
| Move forward / backward | W / S or ↑ / ↓ |
| Turn left / right | A / D or ← / → |
| Fire | Space or Left Mouse Button |
| Main Menu & Difficulty Selection | Gameplay Environment |
![]() |
![]() |
| Restart / Game State UI | Tank Combat |
![]() |
![]() |
The custom gameplay code is organized under:
Assets/Scripts/My Scripts/
Key systems include:
| Script | Responsibility |
|---|---|
PlayerTankController.cs |
Player movement, turning, and temporary speed boosts |
PlayerShooting.cs |
Player projectile firing and fire cooldown |
Bullet.cs |
Projectile movement, ownership, collision, damage, and score penalties |
EnemyTankController.cs |
Enemy detection, pursuit, rotation, and stopping distance |
EnemyShooting.cs |
Enemy firing range, angle checks, cooldown, and boss damage |
EnemySpawner.cs |
Level-based enemy and boss spawning |
Health.cs |
Health, damage, healing, and death handling |
HealthPickup.cs |
Player healing pickup |
SpeedPickup.cs |
Temporary player speed boost |
DifficultyApplier.cs |
Applies Easy / Normal / Hard enemy parameters |
ScoreManager.cs |
Persistent score management across scenes |
LevelEndManager.cs |
Win/loss detection and scene progression |
MenuController.cs |
Menu and difficulty-selection flow |
MusicManager.cs / MusicVolumeUI.cs |
Music persistence and volume controls |
Unity-Tanks-Game/
├── Assets/
│ ├── Scenes/ # Menu and gameplay levels
│ ├── Scripts/
│ │ └── My Scripts/ # Custom gameplay C# scripts
│ ├── Prefabs/
│ ├── Models/
│ ├── Materials/
│ ├── AudioClips/
│ └── ...
├── Packages/ # Unity package dependencies
├── ProjectSettings/ # Unity project configuration
└── README.md
- Clone the repository:
git clone https://github.com/aggelinho/Unity-Tanks-Game.git- Open Unity Hub.
- Select Add project from disk and choose the cloned repository.
- Open it with Unity 2022.3.62f3 LTS.
- Open:
Assets/Scenes/Menu.unity
- Press Play.
Unity will regenerate local folders such as Library/, Temp/, and Logs/; these are intentionally excluded from version control.
- Unity 2022.3 LTS
- C#
- Universal Render Pipeline (URP)
- Unity Physics / Rigidbody
- TextMesh Pro
- Unity Input
- Post Processing
This project uses visual and/or audio assets originating from Unity's Tanks! project/package. Those assets are subject to their respective Unity Asset Store and third-party license terms.
The repository retains the original third-party notice:
Assets/Tanks!_Third-PartyNotice.txt
The custom gameplay systems, C# scripts, level progression, enemy behavior, difficulty system, scoring, pickups, and supporting game logic presented in this repository were implemented as part of this project.
George Aggelis
GitHub: @aggelinho



