JJS Projectile Tag Guide: Moving Hitboxes & VFX Fixes

Connect a JJS projectile to its hitbox and visual with matching Projectile Tags. Build a small test, then diagnose missing effects, misplaced damage, and branch issues.

Updated for the current JJS Skill Builder feature set. Last reviewed: October 16, 2026.

Start with one projectile and one matching tag

Give the Projectile a name such as test_orb in its Projectile Tag field. Enter that same name on the compatible Visual and Hitbox nodes you want to attach. Create the projectile before those attached nodes run.

This is a community-informed debugging workflow. Exact results still need checking in the current game, especially when branches create or cancel projectiles.

Projectile, Hitbox, and Visual have different jobs

Projectile
Provides the travelling object and its movement settings.
Hitbox
Defines an area that can register contact. A tagged Hitbox can follow the matching projectile.
Visual
Provides the appearance. Its Projectile Tag connects it to the travelling object.
Projectile Tag
Names the object those compatible nodes should use. It is not a Roblox asset ID or a marker placed on an enemy.

A visible orb and a successful hit are separate checks. If the projectile already deals damage, test an added Hitbox carefully so overlapping damage does not accidentally make the attack stronger.

A minimal moving-orb test

Save a backup of your move first. Use a short, plain test in a private-server build setup; leave homing, explosions, repeat casts, and elaborate effects for later.

  1. Create one Projectile and set its Projectile Tag to test_orb.
  2. Add one simple Visual after it. Set the Visual’s Projectile Tag to test_orb too.
  3. Use a short Wait at the end while inspecting the result. Compare the projectile lifetime with the visual duration if the effect vanishes.
  4. Check that the visual follows the projectile before adding damage logic.
  5. If the move needs an additional Hitbox, give it the same Projectile Tag and test its position with a stationary dummy.
  6. Repeat with a miss and a second cast. Restore ordinary cooldowns for the final playability test.

Configuration plan · recreate in game

  1. 01 Projectile — tag: test_orb
  2. 02 Visual — projectile tag: test_orb
  3. 03 Optional Hitbox — projectile tag: test_orb
  4. 04 Wait — observe, then inspect cleanup

No universal speed, lifetime, or damage value fits every move. Begin with a slow, easy-to-follow projectile and tune one property per test.

Fix a projectile that looks or hits in the wrong place

Damage moves, but the effect stays on you

Compare the Visual node’s Projectile Tag with the projectile’s tag. Reduce the move to a single timeline before debugging branches.

The projectile moves, but the added hitbox stays behind

Check the Hitbox node’s Projectile Tag, its timing, and its offset. A moving visual alone does not prove that the damage area follows it.

The effect disappears immediately

Test a longer observation window and inspect the effect duration, projectile lifetime, and any early cancellation. Change one setting at a time.

It works until a branch is added

Restore the working single-timeline version. Then add the branch back and compare which projectile exists when the visual runs.

Two projectiles interfere with each other

Give each test projectile its own descriptive tag. Add a second projectile only after the first has passed the hit, miss, and repeat-use tests.

Do not treat a branch workaround as a rule for every move. A player reported fixing a specific setup by creating another projectile in the visual’s branch; that does not establish that every cross-branch setup needs a duplicate or the same cancel settings.

Before adding homing or a second projectile

  • Hit: does the contact point match the visible effect, with the intended damage?
  • Miss: does the move recover and the effect disappear?
  • Wall: does collision behave as intended rather than leaving an invisible damage area?
  • Interruption: what remains if the user is hit before the sequence finishes?
  • Repeat use: does a second cast affect an old projectile?
  • Reload: does the saved move behave the same after importing it again?

Once this version works, add one branch or effect at a time. Use the Particle Emitter guide for texture effects and the Branch guide for conditional follow-ups.

Frequently asked questions

What does Projectile Tag do in JJS?

It identifies a projectile for compatible nodes such as Hitbox and Visual. Use the same tag on the projectile and the nodes that should follow it; a normal target Tag is a separate concept.

Why does my projectile deal damage but have no moving visual?

Test the visual on its own, then check its Projectile Tag and when it is created. Start with the projectile before the visual in one timeline. Branches and lifetime settings can make a more complex move behave differently.

Is this an import code?

No. The example is a configuration plan to recreate and test in the in-game Skill Builder. It is not an encoded moveset or a gameplay-tested preset.

Related JJS resources