From User Bug Submission:
When an actor/component (e. g. a camera) rotates around another object using the rotation lag of USpringArmComponent, it cannot rotate to the top or the bottom. At these positions, the attached camera swerves around the poles as if there is an invisible cylinder with small radius, that has to be avoided. The higher the camera rotation lag speed, the smaller the evasive movement, until it finally vanishes.
I suppose the error is to be found in lines 101 and 107 of file SpringArmComponent.cpp, what leads to line 2359 of file UnrealMath.cpp: The single parts pitch/yaw/roll of the rotators are just linear interpolated, but that is obviously not a correct solution. You probably have to use Quaternions.
Test Project Attached
1. Create an empty project and ideally delete all disturbing objects that are in the default level.
2. Create a blueprint PitchTesterBP that inherits from Actor. Add a SpringArm as root component and attach a child component, e. g. a Sphere.
3. Enable CameraRotationLag of the SpringArm.
4. Let PitchTesterBP permanently rotate around its Y, e. g. by adding a Rotation Movement Component with Rotation Rate (0, 180, 0) to it.
5. Place a PitchTesterBP object in the level, start it, and watch the sphere.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-54222 in the post.
5 |
Component | UE - Gameplay |
---|---|
Affects Versions | 4.18.3 |
Target Fix | 4.21 |
Created | Jan 19, 2018 |
---|---|
Resolved | Aug 14, 2018 |
Updated | Oct 2, 2018 |