I tried to include a lot of things most people would use in C#
-camera based movement(3D)
-smooth rotation to moving direction(3D)
-raycasting (in the Enemy class) to check if player is in their view
-Tween on the hand for attacking
plus I commented much of the code but not everything