Documentation

Character falling or not moving

Diagnose missing ground, wrong layers, visual misalignment, paused ticks and invalid paths using verified source behavior.

On this page

Goal#

Find the first failing part of the input → path → tick → visual chain without changing unrelated gameplay.

Before you begin#

Record the first Console error and compare your scene with the supplied demo. Inspect the gameplay root and visual child separately.

Exact steps: check in this order#

Source-backed movement diagnostics
SymptomCheckExpected correction
Floor visible, but no ground foundEnabled non-trigger Collider; its Unity layer in Ground Mask; ray start height/distance spans it.Physics ground query can hit the actual floor. A mesh renderer or trigger alone is insufficient.
Feet below groundCompare grounded root/node Y with mesh pivot and visual offset.Align the child geometry with a foot-level root. This package is not a gravity controller.
No click responseCamera reference/MainCamera tag, input handling, controls resource, ray target.Sample input reaches the intended motor. Current bundled missing-resource error names TileTickControls.
Path exists but unit stays stillTickManager active/unpaused; sample UnitBrain attached/subscribed; command queue intact.Simulation advances as ticks occur.
Path request failsPath Service Behaviour is an active IPathService; GridManager.Instance exists.Correct service is assigned and start tile is walkable.
Every route blockedUnit/helper colliders accidentally in Blocked Mask; headroom, probes, step/slope limits.Correct the failing constraint; do not enlarge every limit blindly.
Wrong bridge levelLayered surface/node identity and clicked surface; headroom under bridge.Select the intended NavigationNode rather than only an X/Z tile.
Old collisions after editingSurface cache when colliders change at runtime.Invalidate deliberately with GridManager.ClearSurfaceCache().

Console messages to recognize#

  • must implement IPathService: wrong Path Service Behaviour component.
  • GridManager.Instance was null: missing/inactive grid or initialization order.
  • No walkable surface at start: inspect ground/masks/start location.
  • No movement toward ... was possible: review traversal constraints and fallback result.

Custom physics and animation#

MovementMotor and UnitViewMotor write transforms in the current build. If a custom prefab also has a dynamic Rigidbody, another motion controller or root-motion integration, investigate conflicting writers. This is a custom-setup check, not a verified built-in gravity defect.

What you should see#

You can identify whether the failure begins at input, ground detection, pathfinding, simulation or presentation. Keep the smallest corrected scene for comparison.

If something goes wrong#

Changing the mesh height cannot fix a missing ground collider; changing ground layers cannot fix a paused tick source. Check each stage separately and keep evidence of the first error.

Next steps#

Rebuild the flat setup or send a reproducible report with version, masks, collider, motor references and first Console error.