Im trying to recreate deadspace 2s zero g flying controls. you could reorient yourself to any angle, the y axis was up and down and the x axis was left and right as you would expect. I thought it would be simple but I’ll show you what problems Ive run into. I feel like someone with more knowledge could solve this in 2 seconds so here I am.
here was my initial attempt, I wrapped the y axis and didnt actually have to redo the camera controls as they already were. However, when the character/camera is horizontal, the x axis spins the character like a turn table instead of left and right:
![]()
So I went to try out a technique I used for my climbing controls, where I would lerp between upward controls and sideways controls based on the angle of the character. This didnt work though, I am able to get it x input to rotate correctly on one axis based on where it is in the code, ie xaxis, 0, 0 for one angle, 0,0,xaxis for another. and y works as you would need it to when looking sideways, but the controls dont change when looking up or down which has you spinning like a top yet again, but now with the y axis input. :
![]()
so I then arrived at trying to use local euler angles, when passing in numbers, it treats it as += as opposed to =, the axis.value has it spinning at any value that isnt zero. So I tried raw input, and it worked, but using raw input is a really undesirable solution as you’ll see in the video. It removes the features of using value as youre supposed to, ie no smoothing, no ability to limit angles, it doesnt take in sensitivity, etc. :
![]()
I feel like I just lack understanding on rotation and that someone with a greater grasp could solve this in 2 seconds. I would really appreciate help here because I really really dont want to try and frankenstein raw input, I mean the video speaks for itself, its a mess.
I think the solution would just be getting value to work with local angles. It makes sense that local angles have the controls consistent, but like I said, it doesnt want to take in axis.value




