Skip to main content

Components

An Actor by itself is an empty shell โ€” it exists in the world but doesn't do anything. Components are the LEGO pieces you snap onto an Actor to give it shape, behavior, and personality.

Want your Actor to have a 3D model? Attach a StaticMeshComponent. Need it to play sounds? Add an AudioComponent. Want it to collide with things? Slap on a CollisionComponent.

Common Component Typesโ€‹

ComponentWhat it does
StaticMeshComponentGives the Actor a visible 3D model
SkeletalMeshComponentA 3D model with a skeleton for animation
BoxCollisionComponentSimple box-shaped collision detection
SphereCollisionComponentSpherical collision detection
AudioComponentPlays sounds in 3D space
PointLightComponentEmits light from a single point
CameraComponentAdds a camera viewpoint
CharacterMovementComponentHandles walking, jumping, falling, swimming

Adding Componentsโ€‹

In HELIX Studio, you can add components visually in the Blueprint editor's Components panel โ€” hit Add and pick what you need. You can also add them at runtime through code:

Blueprintโ€” Add Static Mesh ComponentScroll to zoom ยท Drag to pan ยท Drag nodes to move
Event BeginPlayAdd Static Mesh ComponentTargetManual AttachmentfalseRelative TransformReturn ValueSet Static MeshTargetNew MeshMy Mesh Asset

The Component Hierarchyโ€‹

Components form a tree. Every Actor has a Root Component at the top, and other components attach underneath it. When the root moves, everything attached moves with it โ€” like a puppet on strings.

MyCharacter (Actor)
โ”œโ”€โ”€ CapsuleComponent (Root)
โ”‚ โ”œโ”€โ”€ SkeletalMeshComponent
โ”‚ โ”‚ โ””โ”€โ”€ AudioComponent
โ”‚ โ””โ”€โ”€ CameraComponent
โ””โ”€โ”€ CharacterMovementComponent

Building Blocks, Not Monolithsโ€‹

The beauty of components is reusability. Instead of creating a totally new Actor class for every object, you mix and match components. A treasure chest and a mailbox might share the same InteractableComponent โ€” different look, same open/close behavior. Build small, compose big.

tip

If you find yourself copying logic between Actor classes, that logic probably belongs in a shared component instead.

โœจ