LOOM is a top-down, 3D game built with Unity v2022.3.9f1 where the player has a grappling hook-like tail which can be shot at pegs in the environment. The tail and the environment functions akin to a geoboard, with the player launching their tail at a peg in the environment, attaching to that peg and stretching the tail from the attached peg around other pegs in the environment to make shapes, generate power to unlock doors, and solve other puzzles.
- Handle movement.
- Handle jumping.
- Detect when the ‘X’ button (on a game controller) or key (on a keyboard) is pressed (Shoot Grapple).
- Detect when the ‘A’ button (on a game controller) or spacebar (on a keyboard) is pressed (Jump).
- Interact with tail/grapple mechanics.
- If the 'X' button is pressed, then launch the tail.
- If no pegs are hit and the max length of the tail is exceeded, then retract the tail.
- If the tail hits a non-peg environmental obstacle (i.e. a wall), then retract the tail.
- Attach the tail if a peg is found.
- If already grappled, retract when ‘X’ is pressed.
- When the player moves away from an attached peg, the tail stretches.
- When the player moves towards an attached peg, the tail condenses.
- As we reach 95% of the tail’s max length, the player’s movement should slow in tandem to simulate increasing resistance.
- At max length, the player should not be allowed to move in any direction that would otherwise extend the tail. (?)
- The tail should bend around pegs and other obstacles while it is attached to a peg.
- The tail should appear to act like a rope.
- To achieve this rope-like behavior, we could use a quadratic Bezier curve whose middle handle is attached to a spring/damper at a fixed point some distance below the midpoint of the two ends depending on the amount of slack in the tail.
- If the slack is negative, the spring constant could be increased for a nice tightening/vibrating effect.
- If a tail grapples to or touches a peg, the peg turns pink and becomes powered.
- To shift the player character's location (transform position) in a scene, the "Player" and "Obi Rope" (child of Obi Solver) GameObjects should be selected in the Hierarchy, but not the Obi Solver! The Obi Solver is a component that handles the physics simulation for the tail and should not be moved.