Cameras are becoming more popular in games now, even if they are not necessarily a pivotal gameplay feature and just a fun bonus for the player. Horizon: Forbidden West, Animal Crossing, and of course Pokemon Snap have all included a camera function for players to enjoy and have fun with.
I thought it would be fun to make a camera in Unity and what better game to recreate a camera mechanic for than Pokemon Snap?
The main pieces I wanted to focus on were the camera function overall, the moving player and moving Pokemon (even if it isn't very pretty), and a really basic scoring system at the end. I wasn't hoping to get really great art or to make the UI clean, I really just wanted a camera to play with.
The camera is very simple- the main goal was to be able to 1) move around as a regular first person camera, 2) take photos by clicking the mouse button, 3) zoom on a right click (this is technically there, but the zoom is very minor because the stage is so small), and 4) preview the photo and save it to be reviewed later. The camera will also not recognize a Pokemon if the view is obstructed by another object or out of range of the player.
This is what the range of the camera looks like with gizmos designating the max and min angles of the up/down and right/left of the camera, and the max radius of the distance for the Pokemon to be away from the player:
I thought it would be funny to grab some free Pokemon models online and use them as quick photo subjects. The models included are created by:
Once the player runs out of film (indicated by the number in the top right corner), the game will display a "Finished!" screen and display the photos taken with the Pokemon's name and the score the photo received. The score is more simple than I was originally planning, but with time constraints I decided to just create a number based off the angle of the Pokemon relative to the forward of the player's camera.
I'm actually pretty happy with how it turned out! The scoring definitely had to be more simple than I was hoping, but I had no idea how well a camera would work or how to best store the data through the game loop, so I'm quite satisfied with how that ended up. I also had a lot of fun picking out some models to use for the demo. It would definitely be interesting to expand the map and add more complexities to the scoring system, which may be something I pursue in the future. But overall, I am pretty excited with how the game loop looks and how the mechanics work together.
You can also visit the github repo here!