[bug?] Actor relative pitch rotation stuck in 90 degrees

It seems that this bug which is stopping me from being able to make progress on my project still exists even after being mentioned in these various locations

Local pitch rotation can be added above/below strange 90 lock, but that won’t work for me with how I’m trying to use it, so I’d really appreciate if this could be fixed or if possible also a functional alternative via blueprints could be suggested.

Hello,

Thank you for your report. rotation lock is a known problem that we are working on fixing. It has been assigned to a developer to be resolved, but until then there is a known work-around in Blueprints that was described here:

“One blueprint setup we have been able to use to create a day/night cycle is using a Timeline that modifies your directional light’s rotation with a Set Actor Rotation node. You can setup a float in your timeline that goes from 0 to 360 (or 0 to -360, depending on which axis you’re rotating around) and control how quickly it does that rotation within timeline itself. If you would like an example of what that would look like in a blueprint, let me know and I’ll provide a screenshot.”

If that does not help, could you please describe what you would like to accomplish so that we can find a better solution?

Thank you,

Thank you very much for your response. I did see that solution however I don’t think it would work for me because of how I want my character to rotate consistently beyond 360 degrees and be able to smoothly level out its rotation from any point. Appreciate knowing bug is still being worked on though :).

For anyone else who may come across this issue my work around was parenting object under 2 Utility>Scene components in blueprint, and rotated one vertically locally and other horizontally relatively which allowed me to achieve a makeshift vertical relative result.

If you possess a Pawn and try to rotate it in any direction, you’ll be limited to 90% in any direction. It’s a bug acknowledged by Unreal developers.

However, if you do rotation in your custom PlayerController blueprint, you can freely rotate 360 degrees without limit. rotation values (roll, yaw, pitch) can even exceed 360 degrees and it’ll work perfectly. So rotate actor from within your PlayerController blueprint instead of your individual Pawn blueprint.

Mmmm. Bug still didn’t get fixed :frowning:

Hi Elijen,

I’ve looked into report and over time it has had many changes and discussions. It is a very tricky thing to solve because it is a problem with math behind translating rotation to quaternion then back to rotation, but there are a few ideas of how to fix it.

I can concur that it is still an issue, or at least, has become one again.
What method could I use to work around this issue?

That’s going to depend a great deal on what you’re trying to accomplish and how. I would suggest opening a new post in Blueprint Scripting section with as many details as you can provide, and community can help with that. For example, SwiftIllusion posted a workaround that works for him above.

Unfortunately, there is no fix to this bug without major changes to engine, and that isn’t likely to happen anytime soon.

Still broken in 4.10.2

Still not working in 4.10.4…This is happening to me when using AddRelativeRotation on a component. However if I use SetRelativeRotation it works.

I’m also having troubles rotating using UE 4.10.4. Pitch rotation stops around value of 90, this seems maximum value.


    void ARotatingActor::Tick( float DeltaTime )
    {
    	Super::Tick( DeltaTime );
    	FRotator Rotation = this->GetActorRotation();
    	Rotation.Pitch += 1;
    	this->SetActorRotation(Rotation);
    	UE_LOG(LogTemp, Warning, TEXT("Pitch: %f"), Rotation.Pitch);
    }

Is there a solution or maybe I’m handling rotation incorrect?

I’ve created following workaround in C++:

ADD TO YOUR .H FILE


#include "GameFramework/RotatingMovementComponent.h"

Add to your Class


UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "C++ Components")
		URotatingMovementComponent *RotatingMovement;

ADD TO YOUR .CPP FILE

Add to your constructor:


RotatingMovement = ObjectInitializer.CreateDefaultSubobject(this, ("RotatingMovement"));	

(Make sure you add ‘const FObjectInitializer &ObjectInitializer’ && Super(ObjectInitializer)’ to your constructor)

And setup rotation and movement in BeginPlay event:


void ARotatingObjectActor::BeginPlay()
{
	Super::BeginPlay();

	// Do something to rotate
	RotatingMovement->RotationRate.Pitch = 360;
	RotatingMovement->RotationRate.Roll = 0;
	RotatingMovement->RotationRate.Yaw = 0;
}

Tick event isn’t needed anymore.

Good luck!

(PS. @FORUM-WEBMASTER There seems to be a styling bug in this forum post. code is not embed properly.)

Still not fixed :(. I just ran into it as well using C++

Roll, Pitch, Yaw rotations - Strange Behavior - Programming & Scripting - Unreal Engine Forums however fixed it.

Hi, I have same problem, diferent is that i dont work with code, any solution for BluePrint?

Thanks!

Hi, I have same problem, diferent is that i dont work with code, any solution for BluePrint?

Thanks!

Still doesn’t fixed 4.12.3

This problem still in 4.12.5 there is a trello card to track status of this bugfix?

There is currently no way to fix this issue without making a major change to engine, and this is not something that we are looking into implementing at this time. In meantime, several workarounds exist as linked in above posts.

Have a great day!

25.09.2016, UE 4.13.0, issue still exists.

A workaround would be using AddLocalRotation instead.

Okay guys, I have found a fix , this worked for me :

][1]

1 Like