This dev log will be kind of a post mortem but more of a review for the assignment that I handed in last Friday.
Overall, the project went well. What I envisioned, mostly agreed with the final result. There were features though such as multiple weapons, different enemy types and more abilities that I did want to implement, yet the scope prohibited that. This is probably due to time constraints and the fact that I wan't always on top of the project. Lacking behind and working on it in bursts, rather than gradually over the assignment time probably lead to this dilemma. In terms of problems with the implemented features, there were a few.
The first problem would be the camera. It has a simple 3D orbit around the player, yet if you look up too high or down too low, it can glitch it out and cause the camera to snap there. This is most likely due to my modifying the euler angles of the camera parent directly, rather using a quaternion function. The snapping into place is due to me clamping the camera rotation. I clamped it so that the camera can't rotate around a full 360 degrees vertically, yet that seemed to cause this problem. I know know that it's due to just adding to euler angles and messing up with the rotation numbers. Further research and learning into that area would help in future projects with a 3rd person camera.
Another problem that I mentioned in an earlier dev log is the shooting. Shooting a physical projectile in a 3rd person game is a hard thing to do as the projectile cannot move in a straight direction without being misaligned with the crosshair. It shoots a raycast from the camera and if it hits something, the projectile moves towards that point. But what if the player shoots into the sky? For this, I just made the projectile move in a general direction towards the crosshair. It looks ugly but hopefully the player won't be shooting in the sky anytime soon. For this reason I was not happy with the shooting and still believe that there is a better solution to the problem. There is raycasting and damaging the enemy instantly on contact, yet that wasn't really how I wanted to go about with this project. Mostly all other 3rd person games that have guns use raycasting, so maybe I should follow them and use that for future projects.