Ive setup a blueprint system to teleport my character around to 4 different locations based on the location and rotation of 4 dummy objects (see image below). The teleportation works fine in terms of location, but it doesnt seem to take the rotation of the dummy object.
I feel like the virtual joystick interface might be overriding it, but im not sure how to change that. I cant delete the virtual joystick interface, because i actually need it to look around. I just want it to start with the dummy object’s rotation each time it teleports, and then have the virtual joystick take over from there.
Alright, figured it out myself. Apparently the rotation is controlled by the controller, not the dummy object.
Ended up using this chain of nodes:
‘Get Player pawn’ → ‘Get Controller’ → ‘Set Controller rotation’ and connected this with the dummy rotation output.
Additionally, you may want to use ClientSetRotation on the controller, instead of SetControlRotation. If you are doing this from a server in a multiplayer game, this allows the client to receive the rotation as well, instead of just the local controller.
// Set location/rotation on the server.
SetActorLocationAndRotation(Location, Rotation, false, nullptr, ETeleportType::TeleportPhysics);
// Since the player is using pawn control rotation (yaw), the controller must be rotated or it will snap back the
// player.
GetController()->ClientSetRotation(Rotation);