Actor collision detection with offset hitboxes #96
No reviewers
Labels
No labels
bug
doodad
enhancement
levels & doodads
security
ui toolkit
wontfix
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
SketchyMaze/doodle!96
Loading…
Reference in a new issue
No description provided.
Delete branch "actor-collision"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This branch attempts to fix actor collision hitboxes when their hitbox is "offset" away from the 0,0 top left coordinate.
Most of the built-in doodads have hitboxes anchored at 0,0 but some (like the Snake and Crusher) are offset - if playing as them, collision bugs may cause clipping through floors or not activating buttons correctly.
Some issues remaining:
373028a166Play as Boy:
Play as Mario (0,32,32,32):
Clean up and improve the between-actors collision code: * Give names to the A, B tuples from BetweenBoxes and call them the stable and mover doodads. All ops are from the perspective of the stable (A) box in relation to the mover (B). * Replace the map[*Actor]*Actor collision struct to one that supports arrays of colliding actors, enabling one actor to post OnLeave events correctly when it overlapped several actors at once. * Possibly improve on some of the collision bugs along the way. Some issues remaining: * If playing AS an offset-hitbox character: * Solid hitboxes against closed doors and platforms works OK. * Button InHitbox (overlap) checks do not fire (buttons won't press). * If playing with a non-offset character (e.g. boy.doodad) * Solid hitboxes work and Buttons will press correctly. * Both types of player hitboxes: * When touching a static object such as the Start Flag which has an offset hitbox of its own: the Start Flag will creep up the level on its Y axis when touched before it settles and won't move.* With help from Claude Code, finally fix collision detection bugs involving actors who have hitboxes offset from the 0,0 corner: - Buttons and switches not activating when touched by an offset-hitbox character. - Bugs with solid hitboxes between doodads when one has an offset hitbox.