Best approach of transforming object in BP (a combination of meshes) in gameplay?

If its transforming a static mesh, its pretty straight forward as you can add a static mesh as component in BP.

However the issue comes fro me when I need to transform an Assembly of object.

Say I wanted a door opening blueprint, that open a door via its hinge when I click on it.

The door should be made up of the door, & a door handle (keep things simple)
When I activate the door to open, the door handle should turn, then the door rotate outwards, then the door handle rotate back to original position.

Before we begin, even begin, what exactly is the best way to make a door assembly.

There are 3 methods that I know of for assembly objects, each I find problem with.

A) group objects, Good for non interactable static objects, but I do not think you can transofrm a group in gameplay. You can’t even name it, non drop it into a BP component editor

B) Child tranform link to parent, cool, but you can’t copy them, But most importantly, you can’t drop them to teh BP conponent editor.

c) Use BP. I thought this is the answer. It shows up in content browser, so you can place it anywhere, & migrate to other project.

However, soon I realised, like the A & B, you cannot drop a BP as component into another BP. You can however make a variable for it, & edit the transformation of each compoent in it I guess.

The workaround I guess, is the BP ‘prefab’ is also the BP door Opening. So instead of trying to create a BP_DoorAssemby, & a BP_doorFrame, then try to add them as component in a BP_DoorOpeningMechanic (which you can’t anyway), you assembly both the doorAssy & DoorFrameAssy into a single BP, piece by piece, e.g Door hinge is parented to wooden Door. Then its easy, as you have access to all transformation of each mesh actor in the BP.

d) Also what happen to prefab?

Did I just answer my own question in ‘C’. LOL, or there are better approach for making transformable objects in class BP, I would like to hear it,

There’s a working door in the content examples project on the marketplace. It doesn’t actually require all of that at all, just a door. If you want all of that there is a way to do it but it’s a ton of extra work.

I think the door in the content example project is a single mesh.

Anway, I test a bit, & parent child mesh works in BP! So if you attach the hinge to the door, when you rotate the door, the hinge move with the door.

The only disappointment is there is no modular way to do it. Meaning, if you have a tap that is make out of 4 nuts & a main body. Everytime you need to use the tap (assembled) as a part of a mechanism in a class BP, you need to assemble the tap each time. Of course you can say, why not combine the mesh to make one. Of course you can, but it wouldn’t be modular anymore, & the tap it will be an extra part in memory.

if i had to do something like that i would consider how much stuff is involved and i would use a hidden in game / no collision system with a component in blueprint or a destroy 2 involved meshes / spawn bp with 2 meshes in an array system.

Thanks Fen,

There are ways to do it, but it could have been simpler. If we can make a group that acts like a single mesh component, or have a AssyPrefabBP that can be used as component in another BP. it could be really helpful for a unit that is made of multiple parts to be use inside a bigger blueprint.

Say I have a wheel, & the wheel is made of 5 nuts, a aluminium rim & tire. Imagine I can make a BP assemble out of a wheel, then add this to my car BP, which has 4 wheels. I can of course spawn teh wheels on creation,. But wouldn’t it be nice if I can put them in the component editor? If you wanted to have the wheels in the car BP, you basically have to assemble the wheels 4 times, (each consists of 5 nuts, tires & rim).

Its a better & more logical ways to do things than spawning the wheels on creation.

At any rate, luckily I do not have overly complicated parts.

My BP Door mechanism is in progress. So far so good. I can post the BP when I am done. :slight_smile: