Problem ,Why component's Forward/Right/Up vector changed in wrong direction while actor rotated

hi iam new to blueprint , I made a simple actor to show what i met in my programe
a blank bp actor , i added two arrow and uncheck the hide in game
the two arrow name “idle” and “move” , the “idle” one has no logic ,the “move” one has a simple move forward and backward by it’s forward vector using tick event
the two arrow has invert rotation


while game start ,the two arrow should maintain “head to head” direction and move


and it work as i expect


but once the actor rotated ,the arrow behavior is changed

i dont know why that happen ,is any way to fix it?

Try using set actor location instead of set relative location or attaching the idle arrow to the move arrow. Your event tick is moving the Move arrows relative location but it is not the root and the idle arrow isn’t attached to it so it’s going to remain where it is. I think it’s only noticeable when you rotate it because that causes the movement logic to move it along the Y or Z axis.

Your get forward vector probably just grabbing the forward in world space, thus offsetting the move at an angle as the whole actor turns. If you only want to move arrow in local space, just rotate one of them by 0z and the other by 180z then just set relative loc along the x (or y) axis.