Frontflip Script -

rb = GetComponent<Rigidbody>();

private Rigidbody rb; private bool isFlipping = false; private float flipDuration = 0.5f; private float flipTimer = 0f; frontflip script

while tick() - startTime < duration do local alpha = (tick() - startTime) / duration local angle = math.rad(360 * alpha) local newCF = startCF * CFrame.Angles(angle, 0, 0) rootPart.CFrame = newCF task.wait() end rb = GetComponent&lt

if (isFlipping) float angle = 360f * (Time.deltaTime / flipDuration); transform.Rotate(angle, 0, 0); flipTimer -= Time.deltaTime; if (flipTimer <= 0f) // Ensure final rotation is exactly 360° transform.rotation = Quaternion.Euler(0, transform.eulerAngles.y, 0); isFlipping = false; private Rigidbody rb

void Start()

void Update()

UserInputService.JumpRequest:Connect(function() if not frontflipActive and humanoid.MoveDirection.Magnitude > 0 then frontflipActive = true local startCF = rootPart.CFrame local startTime = tick() local duration = 0.5 -- seconds