What is preventing my character from rotating the right way?

Hello!

I’m trying to make somewhat realistic flight model, but immediately I’m facing issues:
[Issue rotating character actor - YouTube][1]

Roll control is working fine.

However pitch control is working correctly only when character is parallel to the ground. (Pitch- raises nose, Pitch+ dips)

If I roll character actor on the side - affecting pitch instead of rotating character parallel to the ground rotates it perpendicular to the ground (with some additional weirdness that I cannot explain)

Nothing, except those two “Add Torque in degrees” is affecting the character.
They are connected in sequence, in Event tick:

Please, advise me:
What is preventing my character from rotating correctly?
How can I fix this?

I don’t know much about torque, but you have some major problems there…

The lerp alpha is stuck on zero, which means you might as well just give a zero to the torque node. All that stuff to the left ( the rotation nodes ) is hence doing nothing.

Also, in both cases you take roll, you’re not taking pitch in one case.

Why not just add local rotation?

EDIT: PS I’m putting an example together…

Here. I’m not saying this is the most elegeant method or anything, but it moves the ‘bird’ in the right way. I also notice while I’m doing it that there are nodes like ‘add pitch input’, ‘add yaw input’. That would proper way to do it I think, as a pawn with a controller.

Anyway, looks like this:

299598-bird.gif

I gave it input from the keyboard, obviously you can ignore that aspect. What’s crucial is the setting or the rotation and moving to it with a rinterp:

Hello! Thank you for the swift reply and sorry it took me so long.

The lerp alpha is stuck on zero, which means you might as well just give a zero to the torque node.
Thank you, now I see how this is very unfitting to the situation - will remember not to copy paste solutions without thinking in the future :slight_smile:

Also, in both cases you take roll, you’re not taking pitch in one case.
This is actually working as intended - maneuvering depends on the difference and sum of left and right wing’s “pitches”

Why not just add local rotation?
Good question! Will look into this.

I also got info that my issue might be related to something called “Gumball lock

Thank you for the advice!

Hi - if you add rotation you never get gimbal lock. That’s only when you try and head for a fixed value :slight_smile:

Hello! I have tried implementing your suggestions, and it made few improvements, but the issue persists.

[if link is broken, pls PM me][1]

On the video - everything is relatively fine until 0:18 - where I try to make bunking turn (roll on the side and apply local pitch)
Due to imperfections in 90 degree roll - character starts to pitch a little in world space, while it should actually pitch in local space.
I’m starting to suspect that something is preventing my character from Yawing in world space, but I do not see what.
In the video on 1:00 you can see I’m unpossessing the character actor and trying to apply local roll, yaw and pitch.
When I’m trying to apply local pitch something jerks character back.
I’m starting to think that this is somehow related to movement component or capsule component.

I doubt it is “character movement”, because I have disabled “auto activation” in component details.

Do you have anything in the construction script?

Also, I notice in your rinterps, you have 0,0 as current, you have to same the actual value and feed that into current, that’s how rinterp works…

EDIT: Pardon me, I see you’re using ‘addlocal’, then there’s no point in using interp. Just feed the pulse coming from the controller directly into the node…

EDIT - again: I see where you’re going with the interp and local rotation now, from zero. Not sure if that will work. In any event the interp is not doing it’s job. The whole point of interp is that smooth change of direction ( as in the example ). You just have a sort of switch happening there.

My money is still on something in the construction script :slight_smile:

I’ve tried without without “interp” - it works similarly but feels different - movement becomes to jerky. And removing it does not fix the issue - character still acts weird when I’my trying to rotate in parallel to the ground.
Lets leave “rintrp” and ignore for now.

No - there is nothing in construction script:

I even assumed - it could be related to “orient rotation to movement”, even thou character does not move - but disabling it still does not resolve the issue.

By the way - wanted to thank you for still trying to aid me - Do you have any more ideas?

Hi :slight_smile:

I’m sorry, I’ve totally lost touch with this.

Best thing would be to post your current BP and GIF of movement in a fresh post.

That way, I can take a new look, and you’ll get other input too!

Greetings

By the way - I kinda resolved this.
I have created new blueprint but instead of basing it on “character” class, I’ve used “pawn” class (and to resolve issue with skeleton mesh rag-dolling added capsule component that I use for physics manipulations)
This resolved the issue - griffon rotates correctly in the air, but blueprint now misses “Character Movement” component which apparently was the reason for movement issues.
I hope it won’t come to haunt me later :slight_smile:

By the way - I kinda resolved this.
I have created new blueprint but instead of basing it on “character” class, I’ve used “pawn” class (and to resolve issue with skeleton mesh rag-dolling added capsule component that I use for physics manipulations)
This resolved the issue - griffon rotates correctly in the air, but blueprint now misses “Character Movement” component which apparently was the reason for movement issues.
I hope it won’t come to haunt me later :slight_smile: