Actors can be thought of, in one sense, as containers that hold special types of Objects called Components. Different types of Components
can be used to control how Actors move, how they are rendered, etc. The other main function of Actors is the replication of properties and function calls across the network
Components are associated with their containing Actor when they are created.
A few of the key types of Components are:
This is the base Component. It can be included as part of an Actor. It can Tick if you want it to. ActorComponents are associated with a specific Actor, but do not exist at any specific place in the world. They are generally used for conceptual functionality, like AI or interpreting player input.
SceneComponents are ActorComponents that have transforms. A transform is a position in the world, defined by location, rotation, and scale. SceneComponents can be attached to each other in a hierarchical fashion. An Actor's location, rotation, and scale are taken from the SceneComponent that is at the root of the hierarchy.
PrimitiveComponents are SceneComponents that have a graphical representation of some kind (e.g. a mesh or a particle system). Many of the interesting physics and collision settings are here.
Actors support having a hierarchy of SceneComponents. Each Actor also has a
RootComponent property that designates which Component acts as the root for the Actor. Actors themselves do not have transforms, and thus do not have locations,
rotations, or scales. Instead, they rely on the transforms of their Components; more specifically, their root Component. If this Component is a SceneComponent, it provides the transformation
information for the Actor. Otherwise, the Actor will have no transform. Other attached Components have a transform relative to the Component they are attached to.
An example Actor and hierarchy might look something like this: