Quick answer: Reload the project after adding new members to a family — behaviors on the family propagate at load time. Remove any duplicate behaviors at the member level. Reference Family.Behavior.Property in events, not Member.Behavior.Property, to target the family-scoped instance.
Here is how to fix Construct 3 family behavior not applying to all members. You create a family called Enemies, add a Solid behavior to it, drop three enemy object types in as members. The Solid behavior works on the first two enemies but not the third. Or you add a new sprite to the family after setup and its events fire but the behavior never runs. Construct 3 families are powerful but have a few edge cases around when behavior inheritance is resolved.
The Symptom
A behavior (Solid, Platform, Bullet, Physics) added to a Family in the Family editor does not produce expected results on all members. One or more members act as though they have no behavior. Events checking Family.Behavior.Property return default values for those members.
Variant: the behavior works in preview but fails in an exported build. Or it works on existing members but not on instances created at runtime via System > Create object.
What Causes This
Member added after behavior, without reload. Construct 3 resolves family behavior inheritance at project load. Adding a member to a family that already has behaviors requires a save + reload cycle for all members to properly inherit.
Duplicate behavior on member and family. Adding Solid to both the Enemies family and the Enemy_Goblin member produces two separate behavior instances on the same object. Events that reference the family behavior see one; member-scoped events see the other. Depending on which you check, you may see inconsistent state.
Member is a Tiled Background or TileMap. Some object types (Tiled Background, TileMap, Sprite) can join families, but not every behavior is compatible with every object type. Adding Platform to a family containing a Tiled Background fails silently on that member.
Behavior disabled per-instance. Behaviors have an Activate/Deactivate action. If an event disables Solid on a specific instance, that one instance no longer contributes to the behavior, even though the family still has it.
Event sheet includes wrong scope. An event using “On created” for the member object type, not the family, initializes member-scope properties only. Family behavior defaults stay at their initial values.
The Fix
Step 1: Centralize behaviors on the family, not the member. Pick a level and stick to it. Delete any behavior on a member that is also on its family:
- Open the family editor (double-click the family in the project pane)
- Confirm the behavior is listed under Behaviors
- Open each member object type and check the Behaviors pane
- If the same behavior appears on both, delete it from the member
Behaviors always cascade family -> member. A member never needs to duplicate what its family already provides.
Step 2: Reload the project after family edits. Construct 3 refreshes inheritance at load. After adding new members or new family behaviors:
- Save the project (Ctrl+S)
- Close the project
- Reopen it
This is especially important for imported projects. Add-new-member events fire inheritance automatically on save + reload.
Step 3: Reference family scope in events. When writing events that should affect all members, pick the family from the object picker, not a specific member. The event sheet resolves at edit time:
- Correct: Enemies > On collision with Player — Enemies: Destroy
- Wrong: Enemy_Goblin > On collision with Player — Enemy_Goblin: Destroy (only goblins)
Family-scoped events automatically apply to every member of the family. Use them liberally for shared behavior.
Step 4: Use family variables for shared state. Add instance variables to the family (not the member) for properties all members share:
- Enemies family:
HP (number, default 10),damage (number, default 1) - Reference as
Family.HPin events - Override per-member defaults in the Layout Editor properties panel
Family variables are the clean way to share data. Per-member variables with the same name do not bridge the gap — they are separate values.
Creating Family Instances at Runtime
System > Create object targets a specific object type (member), not a family, because you must know what to spawn. But once created, the instance automatically inherits family behaviors. If a spawned instance does not inherit:
- Verify the member object type is truly in the family (open Family editor, check members list)
- Verify the behavior is on the family at export time (rebuild if needed)
- Check that no “On created” event is removing or deactivating the behavior
Compatibility Checks
Not all behaviors work on all object types. Construct 3 will still let you add them in the editor but they silently do nothing. Common mismatches:
- Platform on TileMap: use Solid instead and handle jumping elsewhere
- Physics on Tiled Background: physics needs a bounding body; use Sprite members only
- 8Direction on UI elements: generally incompatible with anchored/parented layouts
If a family contains a mix of Sprite and TileMap members, split into two families — one per object type — so behaviors apply cleanly.
Debug with the Debugger
Run the project in debug mode (F12 while previewing). Inspect an instance. Its Behaviors list shows what is actually active. If a member shows an empty Behaviors list when its family has behaviors, inheritance did not happen — reload the project or re-save after editing.
“Behaviors on the family, not the member. Reload after changes. Family-scoped events for shared logic.”
Related Issues
For other Construct 3 patterns, see the Construct documentation on Families. For related 2D engine gotchas, GameMaker Draw GUI Text Blurry on High DPI covers a similar rendering-order issue in another 2D engine.
Family owns the behavior. Member inherits. Save and reload if inheritance looks broken.