| name | playcanvas-avatar-navigation |
| description | Physics-based avatar movement, colliders, and camera follow in PlayCanvas + Ammo.js scenes |
| prerequisites | ["PlayCanvas engine","Ammo.js physics","HTML canvas"] |
| tags | ["playcanvas","physics","avatar","navigation","ammo.js"] |
PlayCanvas Avatar Navigation
Physics-first avatar movement for PlayCanvas + Ammo.js with crash-safe lifecycle rules.
When To Use This Skill
Use this when a project needs:
- A user-controllable avatar walking/flying on 3D geometry
- Physics colliders for buildings or terrain
- Third-person camera following the avatar
- Safe entity creation/destruction without Ammo.js crashes
Read Order
- This file
- patterns/ammo-compatibility.md
- patterns/safe-physics-cleanup.md
- patterns/avatar-controller.md
- patterns/camera-follow.md
Preflight
Implementation Workflow
- Create
pc.Application(canvas) synchronously.
- Initialize Ammo and enable rigidbody/collision systems.
- Create static ground/boundary colliders.
- Spawn avatar with dynamic rigidbody + collision shape.
- Add input-driven movement controller.
- Add follow camera and reset camera distance on model swap.
- Destroy entities through physics-safe cleanup only.
Verification Checklist
Critical Gotchas
- Never call direct
entity.destroy() on physics entities; use safe cleanup pattern.
- Parent destroy cascades to children; parent must also be physics-safe destroyed.
- Some PlayCanvas + Ammo combinations break mesh colliders (
.at() issues); follow compatibility pattern.
- Canvas/application init order matters in React: claim canvas first, async init after.
- Camera state can persist across model swaps; reset follow distance explicitly.
References