Made as a group project, almost all of the programming for Cowgirl Crusade was done by me, with some small exceptions that were later checked and approved by me. The time limit for this project was approximately 4 weeks, which unfortunately means most features are not nearly as refined as they could be, however the project was scoped to have each feature that made it to the final version with nothing being cut.
The basic movement works in two parts, "Rails" and "Freefly".
Rails movement uses a Cinemachine spline path to give designers the freedom to hand-craft a path around any environment, with the system being reused to create enemy paths. There are also variables and conditions to control the speed at which things move along the path, if they should try to match the speed of something else (e.g. enemies trying to match the speed of the player), and what the next path to follow would be (e.g. if enemies follow the player, they may leave at a certain time, the player may loop until some enemy is defeated).
Freefly movement is used to give the player the ability to dodge incoming attacks while still being constrained to the path of the rails. It uses the boundaries of the camera to give the player an area to fly around on, and prevents them from moving past those boundaries.
Bullets and shooting are handled in a way that makes them unrealistic, but visually distinct.
Player bullets are given a target when fired which they home onto and eventually hit with 100% accuracy, assuming the player initially fired at an enemy. This had to be done because the player needed to be rewarded for aiming correctly with the indication of a reticle that changes color when hovering over an enemy, and with the bullets moving as slow as they do, a homing bullet was what looked the best after testing.
Enemy bullets work by simply firing directly at where the player is, but parenting the bullet to an empty object that follows the player's rails but not the player itself, as that allows the player to see a bullet incoming and dodge while also letting the enemies aim on-target. An enemy variant shoots a laser, which targets somewhere near the player and then drags the laser in a random direction, again to let a player see an attack incoming and dodge.
Credits
Designers
Jade Baumanis
Lucas Brown
Alexander Edwards
Matthew Liddiard
Benjamin Tedmanson
Programmers
Alex Giglia
Artists
Anakin Kaldy
Bailey Rayko
Lloyd Tuck