gamedev-physics
Installation
SKILL.md
Game physics & collision
Make bodies collide, move, and stay stable across Godot, Unity, and Unreal. This skill owns the mental model (body types, colliders, layers/masks, character controllers, joints, queries, determinism) and maps every concept onto each engine's real API. When physics "feels broken" — jitter, tunneling, sinking, ghost collisions — the cause is almost always one of: wrong body type, a layer/mask mismatch, or moving/integrating outside the fixed physics tick. Check those first.
Version contract — read first (never emit these)
| Engine | Target | Banned / deprecated | Use instead |
|---|---|---|---|
| Godot | 4.x | move_and_slide(velocity, up, ...) with arguments (that is Godot 3) |
Godot 4 move_and_slide() takes no args; set the velocity property first |
| Godot | 4.x | KinematicBody2D/3D, RayShape, WorldMarginShape, linear_velocity *= delta before move_and_slide() |
CharacterBody2D/3D, SeparationRayShape2D/3D, WorldBoundaryShape2D/3D; move_and_slide() is already delta-scaled |
| Unity | Unity 6 (6000.x) | Rigidbody.velocity / Rigidbody2D.velocity, rb.drag, rb.angularDrag |
linearVelocity (+ linearVelocityX/Y), linearDamping, angularDamping; new AddForceX/Y |
| Unity | Unity 6 | moving a dynamic Rigidbody from Update; transform.position = on a physics body |
move in FixedUpdate; use MovePosition/AddForce, never write transform on a simulated body |
| Unreal | UE5 (Chaos) | any PhysX/APEX API, bUseAsyncScene, NvCloth |
Chaos is the only physics backend in UE5; use UPrimitiveComponent physics + PhysicsConstraintComponent |
If you are unsure a symbol exists in the user's exact version, say so instead of inventing it.