I’m following this guide.

:

I’m trying to get it to work for a rectangular block rather than a cube. But once the block is straight up in the air, it clips through the floor.

Any ideas?

You will need to add an offset into your rotate around vector axis based on the height above the ground.
if lying down, use small offset, if standing up use larger offset.
This could also be calculated by working out the distance from the actor position to the “ground”

Can you send a screenshot of the blueprint where it rotates?

Its actually handled in a few parts. The function I posted, called “Move Tween” is responsible for animation and rotation. This function, called “pivot” is responsible for the calculation of offset. “pivot” is pictured below.

I supposed my question now is, how would I be able to get a condition based on whether the block is stand up or lying down.

Quick question, how do I get length of the line from the “break hit result.” Is that the “normal” pin?

In your pivotpoint function - the “Make Vector” has a set height of Z -50.
Test changing that to make sure it pivots at different heights.

What to do next is a line trace for objects straight down, break the hit result and return the length, use the Length output to determine the Z for “Make Vector” then it should always be at the right height

take the actor location vector, subtract the Location, feed the result into a “VectorLength” you will get a float with the distance between the two.

I cant get it to work, Im sure I messed up. Here take a look(From Pivot Function)

Thanks so much for all you help! (Event Tick from the block object)

on the second picture (capture3.png) you have location and get actor location doing some subtraction, basically drag off the output pin of the subtraction and type vectorlength and it should tell you the length(in the case the Z offset) you need to feed into the “Make Vector”

you dont need the Break Vector you have listed in the pivot

I think we are almost there, the object just keeps adding the length from the ground, so it climbs rather than correcting the depth.

It keeps climbing rather than dynamically switching between z=-50(for laying down) and z=0(for standing up)

The vector length is also returning a value much higher than what is needed (ranges from 107 to 138 on first button press).

another option… just use the returning float to trigger a bool…

comparefloat input: vectorlength compare with 110

set Z float to 0
< set Z float to -50

or some variant, it’ll just be the math to get that accurate position everytime