So I have been working with CFrame a bit, just playing around, and I wrote a script so that when W is pressed the character rotates forwards. Everything works without errors, however, when the player has rotated to 90 degrees or-90 degrees, it refuses to rotate farther. I currently have PlatformStand set to true (prevents player from auto-rotating back to original state) and DevComputerMovementMode set to scriptable (so the player doesn't move forward when W is pressed. I also have a BodyForce in the player to cancel out the effects of Roblox gravity. Here is the main part of the script I am having trouble with:
Input.InputBegan:connect(function(InputObject) if InputObject.KeyCode == Enum.KeyCode.W then if XRotB == true then --Ignore this statement, it is for later purposes XRotB = false end XRotF = true while XRotF == true do wait() local Matrix = Character.Torso.CFrame local sx, sy, sz, m00, m01, m02, m10, m11, m12, m20, m21, m22 = Matrix:components() local Heading = math.atan2(m02, m22) local Attitude = math.asin(-m12) - 0.025 local Bank = math.atan2(m10, m11) local PosX = Character.Torso.Position.X local PosY = Character.Torso.Position.Y local PosZ = Character.Torso.Position.Z Character.Torso.CFrame = CFrame.new(PosX, PosY, PosZ) * CFrame.Angles(0, Heading, 0) * CFrame.Angles(Attitude, 0, Bank) print(math.deg(Attitude)) end end end)
Like I said, I am just learning about advanced CFraming so I apologize if it is messy... Again the issue is that the rotation won't pass 90 degrees or-90 degrees, as proven by when I print the math.deg(Attitude). Any suggestions?