Unity Physics FPS
Wave-based survival shooter, built in Unity 6.
The challenge
Turn the topics from the Physics in Computer Games course into a playable first-person game: movement, shooting and enemies that react in real time, wrapped in a complete game loop with menus, lives and a clear win/lose state.
My contribution
Built a first-person survival shooter in Unity 6 with C#. The player moves through a low-poly nature map and fights waves of animal enemies with switchable weapons. The core of the work is the shooting system, created directly in Unity with its built-in tools: the recoil and firing motion are animated with Unity's Animation and Animator, gunshot sounds play through Audio Source components, and bullets are handled by Unity's physics. All of it is triggered from the same shot so it stays in sync. On top of that I built the scene flow, enemy waves, health and lives, and a HUD that tracks ammo, time and the current wave.
How it works
Every shot runs through one sequence. The fire input spawns the bullet from the gun, plays the gunshot sound, triggers the firing animation and applies a recoil kick that then settles back, all in the same frame so the visual, physical and audio feedback match. Each shot also updates the ammo counter on the HUD. Enemies spawn in waves and move toward the player. When health runs out, the player loses a life and respawns after a short countdown, and losing every life loads the failure screen with restart, main menu and exit.
A shot, its feedback and the survival loop
Receive fire input
The player triggers the weapon through the input system.
Spawn and synchronize
Create a bullet, play sound and animation, apply recoil.
Update gameplay state
Track ammo, enemy waves, health and lives on the HUD.
Continue or restart
Remaining lives allow respawn; no lives opens the failure screen.
The outcome branches by remaining lives. This academic prototype uses free environment and enemy assets.
Gameplay & HUD
The HUD shows a health bar with hearts for the remaining lives, an ammo counter, a run timer and the wave number. Weapon icons show which guns are available, and a central crosshair is used for aiming.
What it covers
- Bullet firing handled by Unity physics
- Recoil animated in Unity, kicking back and recovering after each shot
- Gunshot sounds through Audio Source components, synced to each shot
- Animator Controller (GunAnimator) for firing and weapon animations
- Ammo tracking shown on the HUD
- Wave-based enemy spawning with a wave counter
- Health, lives and timed respawn
- HUD built with TextMesh Pro: health, ammo, timer and wave
- Unity 6 (6000.5), C#, URP and the Input System
Gallery
Outcome
A complete, playable game loop where shooting feels responsive: bullet, recoil, sound and animation land together on every shot. It shows the course concepts (forces, motion and real-time interaction) working inside an actual game.
Project scope
This is an academic project built for a single course. The environment and enemy models come from free asset packs (Simple Nature Pack and a low-poly animal pack), and the menu artwork is placeholder art rather than original work. The focus was on gameplay systems and physics-driven interaction, not on original 3D art or a release-ready build.





