Download Download Support FPE

How to Create Inventory Pickups and Holdable Items in Blender

How to Create Inventory Pickups and Holdable Items in Blender

An apple in a backpack and a lantern carried in front of the camera are both ‘items,’ but they solve different artistic and gameplay problems. Decide whether the object becomes data or stays a physical part of the world, then author it accordingly in Blender.

Choose first: inventory pickups become an item kind plus quantity; holdables remain individual physical props with shape, mass, and orientation.
FPE Inventory Item panel showing the magic_apple kind and quantity
Inventory items use a stable kind such as magic_apple so Godot can match the imported object to its inventory definition.

Inventory item or holdable prop?

Inventory items are abstract records that can stack and survive level changes. Holdables are individual world objects with shape, mass, and orientation. Use a holdable for a crate, lantern, cup, or puzzle piece. Convert it into inventory data only when the design calls for putting that physical object away.

Lantern-rigid selected in Blender with Physics and Holdable enabled
A prop that remains visible in the world can be both a physics body and Holdable.

Author the choice in Blender

  1. For a stackable pickup, check Trigger, then open Folded Paper Engine → Inventory Item. Enter an Inventory Item Kind ID such as MAGIC_APPLE and a starting quantity.
  2. In Godot, add an FPEInventoryConfig node to the game scene. In its Inventory Kinds array, create an InventoryItemKind resource whose id is exactly MAGIC_APPLE; capitalization and spelling must match Blender. Set its player-facing label, plural label, and stack limit, then set the player inventory size. The inventory reference explains every field, and the Inventory Items tutorial shows the complete path.
  3. For a physical prop, add -rigid to its Blender object name, then enable Physics and Holdable. Set mass, friction, and bounciness to match the object.
  4. For a first-person carrier, enable Can Hold Items under Player Controls and tune Hold Zone Distance and Hold Zone Size.
  5. Export and test the interaction beside walls, in corners, and with a full inventory.
Physics settings for a holdable lantern in Blender
Give a holdable prop believable physics before testing pickup and release behavior in Godot.

The traditional Godot workflow

  1. Make the prop a RigidBody3D with a simple, accurate collision shape.
  2. Use your normal interaction detector to select it.
  3. Add a hold-zone marker in front of the player's camera.
  4. While held, apply force or velocity toward the marker instead of assigning global_position.
  5. Use a shape cast or the body's contacts to shorten the target distance near walls.
  6. On drop, restore the item's ordinary damping, gravity, collision exceptions, and ownership state.

Keep the controller stable

A spring-like controller works well: velocity follows the position error with damping. Cap maximum force and drop the object if it becomes too distant, trapped, or invalid. Heavy objects can use a weaker spring or be rejected by can_pick_up(). Avoid changing collision layers unless you have a precise reason; the wall collision is what prevents the held item from becoming a camera-mounted battering ram.

Common mistakes

  • Teleporting every frame: this bypasses collision and causes clipping or violent corrections.
  • Parenting under the camera: a physics body no longer behaves like a world object.
  • Ignoring player collision: the prop can shove or launch its holder. Use a targeted collision exception while held.
  • Losing state on drop: save and restore any gravity, damping, freeze, or collision values you change.

Godot reference: ShapeCast3D class reference