2026
A Helicopter Game
A 2D Unity prototype about flying a helicopter, collecting crates, and delivering them while managing fuel and trying to not get damaged.
Description
This prototype focuses on physics-based helicopter movement, package delivery, resource management, and Arduino-supported input. I worked on the overall game architecture, GameManager-driven state flow, Rigidbody2D flight controls, serial Arduino input mapping, package pickup and delivery logic, fuel and repair systems, collision handling, scoring, star evaluation, menus, UI feedback, audio, and level progression.
Devlog notes
- Helicopter Movement: The helicopter is controlled through Rigidbody2D velocity, acceleration, gravity, damping, tilt interpolation, and direction-specific visuals.
- Arduino Input: Serial data from joystick and potentiometer values is mapped into horizontal movement and vertical speed for external hardware control.
- Package System: Packages are collected through collision detection, attached visually to the helicopter, and delivered at drop zones through GameManager state validation.
- Fuel System: Fuel drains over time based on flight activity, can be refilled through pickups or service stations, and triggers a crash state when depleted.
- Damage System: Rotor and body hits are evaluated separately, with body damage reducing helicopter condition and rotor hits causing immediate failure.
- Service Stations: Fuel and repair stations apply timed resource ticks while the helicopter remains inside their trigger area, with particle and audio feedback.
- Scoring: Delivered packages grant score points, remaining fuel adds bonus points, and high scores are stored through PlayerPrefs.
- Star Rating: The level result is evaluated using delivered packages, damage taken, remaining fuel, elapsed time, and estimated level time.
- UI Flow: The UI reacts to GameManager and ScoreManager events to update crates, score, timer, fuel display, warnings, win panels, and game-over panels.
- Level Progression: Completed levels unlock progress, load the next configured scene, and preserve runtime level data for menu-based level selection.






