I would suggest making the ship a skeletal mesh and having a bone on each door “side rotation point (Where it swings)” and then when needed just rotate that bone to open it.
Alternatively you can add static meshes in, with the pivot point center, on the edge where it swings open from anywhere you want and then take them all and create an array out of them then you could do on interact/line trace/beginoverlap it does a ForEach loop to find out which door it is and then rotate that door along its Z axis.
It does get to be a very messy solution when you need a moving vehicle with many doors. What I did in my submarine game is on the deck it was a seperate model that just had a few usable doors then down below where there was more doors I switched to a different, static mesh whne the player climbed down the hatch (since you cant se the water anymore). This mesh wasnt moving in the physdical sense, only the guages and UI “faked” the movement and looking through the periscope faked the appearance of movement.
This makes it easier to place blueprint doors in a level since you ship is stationary. You could have that level preloaded at all times and then just switch to it when the player goes below.
No matter what way you look at it its going to be
- a) messy
- b) a long time to create
- c) complicated
Pick at least 3
Hope this helps
Don’t forget to accept an answer that best clears your question up or answers it so when the community finds your question in the future via search/google they know exactly what you did to fix it/get it going.