View Model Reload Animation goes to random screen position after the animation is finished

We are working on an FPS game and right now we are facing some issues with the reloading animation. This animation is done on the view model. The exact issue is that the animation seems to change the position of the view model as soon as the animation has completed.

We have figured out why its happening but can’t seem to find the solution. We all know that as the player moves, his arms move along and which I feel is affecting the animation. Because the moment we press the key to reload and depending on what position your arm is in, the animation behaves accordingly and hence changing the idle position when it’s completed.

The gun is at the bottom right corner of the screen but when we press the reload key and the animation is done, the gun moves either to the bottom center or bottom left or moves forward in the view model or any random pos.

  1. So how can I fix this?
  2. Also, how can I set the animation to play the same regardless of the roblox player model type(R15 with different heights).

We are using the RightUpper Arm to set the position for the ViewModel.
PlayerUpperTorso = Player Character’s Torso and UpperTorso = ViewModel’s Torso

Here’s the script that we are using:

elseif not Player.Backpack:FindFirstChild("BluePelletGun") and Player.Team == Teams[1] then
            Joint = Instance.new("Motor6D")
            UpperTorso = viewModel:FindFirstChild("UpperTorso")
            HandleOfWeapon = viewModel:FindFirstChild("BluePelletGun").Handle
            if UpperTorso:FindFirstChild("Handle") then
                UpperTorso:FindFirstChild("Handle"):Destroy()
            end

            -- This part affects the position of the reloading animation
            repeat
                wait(.01)
                PlayerUpperTorso = Player.Character:WaitForChild("RightUpperArm")
                UpperTorso.CFrame = PlayerUpperTorso.CFrame * CFrame.new(0,0,0)
            until
            PlayerUpperTorso ~= nil
            -- till here

            Joint.Parent = UpperTorso
            Joint.Name = "Handle"
            Joint.Part0 = UpperTorso
            Joint.Part1 = HandleOfWeapon
        end

        repeat
            wait(.01)
            RelAnimate = viewModel.Humanoid.Animator:LoadAnimation(RelaodAnim)
        until
        RelAnimate ~= nil`

try using renderStep to position the viewmodel RunService | Documentation - Roblox Creator Hub its deprecated but that what i always use in my fps it still working good also try showing us a picture of the issue happening

1 Like

Thanks for the help. I managed to solve it by rather using the Camera CFrame than the Torso CFrame. I did have to offset the position to match the weapon position on the screen when it’s idle but now its consistent regardless of the player height or model or even screen resolution.