---
title: "Hit Shapes - s&box library"
description: "non-rectangular UI regions in s&box"
canonical: "https://sbox.watch/libraries/xaz/hit_shapes/"
generated_at: "2026-07-23T00:22:23.839Z"
---

# Hit Shapes

non-rectangular UI regions in s&box

- Type: library
- Ident: xaz.hit_shapes
- Creator: xazware
- Canonical: https://sbox.watch/libraries/xaz/hit_shapes/
- Markdown: https://sbox.watch/libraries/xaz/hit_shapes.md
- sbox.game: https://sbox.game/xaz/hit_shapes/
- Generated: 2026-07-23T00:22:23.839Z

## Stats

- 24h momentum: +0
- Terry score: 43%
- Favorites: 3
- Upvotes: 2
- Downvotes: 0
- Updated: Jun 6, 2026
- Created: May 25, 2026
- Size: 67.5 KB
- Files: 28
- Tags: css, custom, hit, hitbox, razor, scss, shape, shapes

## Description

Hit Shapes
Non-rectangular UI regions in s&box

Hit Shapes wraps a shape resolver in a state machine that turns whole-panel mouse events into per-slot OnSlotEnter / OnSlotLeave / OnSlotClick callbacks.

Depends only on Vector2 and MousePanelEvent

Quick start example:
- Download the library
- Make a screen panel GameObject
- Add UI Panel --> Razor Hit Shape Demo
- Link camera to the Screen Panel
- Hit play

Built-in shapes

 Radial(slots, innerRatio?, outerRatio?) - Wheel of equal wedges - 0..slots-1, clockwise from 12 o'clock
 RectGrid(cols, rows) - Uniform grid - row-major, top-left = 0
 Polygon(verts) - One polygon, unit coords - always 0 if inside
 Polygons(polys) - Many polygons - index of first containing polygon
 Custom(slotCount, nativeSize, fn) - Resolver de-scaled to a fixed pixel frame - whatever you return
 CustomRaw(slotCount, fn) - Resolver receives raw engine-frame coords - whatever you return
 Union(a, b) - A's slots, then B's offset by A.SlotCount - A wins on overlap
 Intersect(a, b) - A's slot, only where B also resolves - A's slot count
 Difference(a, b) - A's slot, where B does NOT resolve - A's slot count



## More by xazware

| Package | Ident | Players | Favorites | Upvotes | Score | Markdown |
| --- | --- | --- | --- | --- | --- | --- |
| Razor Designer | xaz.razordesigner | 0 | 15 | 16 | 86% | https://sbox.watch/libraries/xaz/razordesigner.md |
| goo | xaz.goo | 0 | 7 | 10 | 79% | https://sbox.watch/libraries/xaz/goo.md |
| Test library | xaz.gooui | 0 | 0 | 0 | -- | https://sbox.watch/libraries/xaz/gooui.md |
