Godot Health, HitBoxes, HurtBoxes, and HitScans
January 16, 2025 · View on GitHub
Composable 2D/3D components for health, damage, and healing in Godot 4.5+.
Caution
v5 renamed the simple nodes to Basic* and added advanced variants with typed actions and modifiers.
Upgrade to v4.4.0 first if migrating from older versions, then to v5.
Documentation
See the Wiki for tutorials and deeper detail.
Overview
flowchart LR Hit["HitBox / HitScan"] -->|"HealthAction[]"| Hurt[HurtBox] Hurt -->|"HealthModifiedAction[]"| Health Health --> Apply["damage / heal"]
| Role | Basic (simple) | Advanced |
|---|---|---|
| Attack (area) | BasicHitBox2D / 3D — affect + amount | HitBox2D / 3D — actions: Array[HealthAction] |
| Attack (ray) | BasicHitScan2D / 3D — affect + amount | HitScan2D / 3D — actions; call fire() |
| Defense | BasicHurtBox2D / 3D — damage/heal multipliers | HurtBox2D / 3D — modifiers by action type |
| State | Health — current/max, conditions, optional modifiers | same |
Pipeline: HitBox/HitScan send HealthAction values → HurtBox wraps them with its modifiers → Health merges its own modifiers and applies damage or heal.
Core resources: HealthAction (affect, type, amount), HealthModifier (incrementer, multiplier, convert fields), HealthActionType (KINETIC, MEDICINE, …).
Health
Tracks an entity’s health and emits signals for damage, healing, death, revival, and related edge cases (damageable, healable, killable, revivable).

HurtBox
HurtBox2D / HurtBox3D need a collision shape and a linked Health. Prefer BasicHurtBox* when you only need damage/heal multipliers (or invert damage↔heal). Use the base HurtBox when you need per-type modifiers.

HitBox
HitBox2D / HitBox3D detect HurtBoxes on collision. Prefer BasicHitBox* for a single damage/heal amount. Use the base HitBox to send multiple typed HealthActions. Set ignore_collisions to stop further hits (e.g. before queue_free()).

HitScan
HitScan2D / HitScan3D extend RayCast2D / RayCast3D. Prefer BasicHitScan* for a single affect/amount. Call fire() to apply the hit. Enable colliding with areas (forced in the editor).

Live example
itch.io — godot-health-hitbox-hurtbox-hitscan
Installation
- Open the AssetLib tab in the Godot Editor.
- Search for
Health,HitBox, orHurtBox. - Download Health, HitBoxes, HurtBoxes, and HitScans.
- Enable it under Project → Project Settings → Plugins.
Usage

- Add a
Healthnode to the entity (CharacterBody2D,CharacterBody3D, etc.). - Add a
BasicHurtBox2D(or3D) with a collision shape; assignHealthand set its collision layer. - For melee/projectiles: add
BasicHitBox2D(or3D), setaffect/amount, and match the HurtBox mask to that layer. Collisions apply automatically. - For hitscan weapons: add
BasicHitScan2D(or3D), set the mask the same way, and callfire()when shooting.
For multiple damage types or custom resists, use the non-Basic HitBox/HitScan/HurtBox nodes and configure actions / modifiers.
Issues
Submit issues on the GitHub Issues page.