Unframed
Project Unframed
2023: March - May
Project Unframed was my first larger Unity project. Here I acted as sole programmer. My main focus was on making player puzzles and the item interaction system. Beside this there are level transitions, sound triggers, etc.
Physics-based item system
The physics-based item system allows players to pick up, move, and place objects in the game world. The ObjectGrabbable script handles grabbing, dropping, and positioning objects relative to the player's crosshair. The PlayerPickUpDrop script on the player character uses raycasts to detect interactable objects and trigger the ObjectGrabbable functions. Objects can be placed in specific locations marked with triggers, which set the “ObjectInPosition” boolean and allow the player to finalize the object's position.
A script on the player character handles displaying a "Press E to interact" UI pop-up when the player is looking at an interactable object. It uses ray casts to detect objects with the “ObjectGrabbable” component and enables/disables the UI text accordingly.
Puzzle triggers
Triggers are used for various purposes, such as moving a door when specific objects are placed correctly and triggering the appearance of a painting after completing a level. The door trigger checks if the required objects are in their final positions and moves the door when the player interacts. The painting trigger attempts to enable the painting's mesh renderer if a boolean indicates the player has completed the prerequisite level, but this implementation had issues.
Level loading
The game uses asynchronous scene loading to transition between levels. When the player interacts with an elevator button, a script loads the new scene asynchronously, moves the player to the new scene, sets the player's position, and destroys the old scene. The same process is used for returning to the hub area.