Dead Assault
Watch the gameplay demonstration here on YouTube.
View the GitHub repository for this project here.

Game Overview
Dead Assault is a 3D first-person shooter game. The project was made in Unity while learning an online course. The objective of the game is to clear the level of all zombies that have taken over an abandoned mansion.
Zombies

The zombies use a humanoid rig with different animation states to match the behaviour of a zombie. Navigation area has been baked to define where the zombies can move around. The provoked state can be triggered either by the character getting too close to the enemy or by taking damage. Once the enemy gets within its attacking range, the attack animation will begin and if the player is still within range at the point of strike in the animation, the player will take damage. To ensure the enemy attack animation is always facing the players direction, a FaceTarget method is used. Once the zombies health has reached 0 or below, a death animation will trigger depending on if they were moving or stationary at the time of death.
Weapon System

There are 3 different weapons, all with different ammo types and characteristics. A WeaponSwitcher script takes both keyboard number and mouse scroll wheel to determine which gun to have out. Raycasts are used to fire the gun and determine what it hit. 2/3 of the guns are capable of aiming down sight which uses lerp to change the transform values. An enum class is used for the different ammo types so when the player walks over the pickup, the correct type is increased.
Learning Experiences

This project really helped with gaining a good understanding of how to implement a weapon system into a game and how to have all the components interact with each other. It also improved my knowledge of character animation states and rigging.
Example coding areas involved:
- Enemy animation states
- Raycasting
- Enums
- Weapons and ammos
- Enemy navigation areas
- Particle systems
- Device inputs
- Pickups