How to make viewmodels out of the players arms? (again)

Ok, so I want to make a viewmodel using (mostly) scripting.

The issue is that when I just rotate the players arms, they end up being weird for first person. They change distance from the camera based on where you are looking. Now, when I tried another solution ( moving based on the camera, they looked… funny )

I actually have an example of the arms moving funny (look at the FPS game Cold War: Cold War - Roblox)

I want my gun system to have first and third person. (example: Blackout: Revival’s tutorial: Blackout: Revival - Roblox)

Sorry for bugging all of you (again), but I am STUCK right now. Can you give me some pointers?

1 Like

Even more notes:

I am trying to make it mostly scripting because I like nice and tidy projects, and cause I don’t wanna double my animating load (im a terrible animator)

1 Like

i dont really know when to bump so i guess im doing it right now

im pretty sure im being impatient but whatever

What your asking isn’t 100% straight forward for me, but you could clone the players arms from their character when they spawn, just make sure to make the character Archivable so that it can be cloned. Then do whatever else you need to move the arms, remove accessories, and animate them.

What you are saying sounds like a good idea, I think I did encounter a tutorial like this, but it ended up being buggy for me. I will show you the example: FPS Tools Using ViewModels Tutorial (With Working ADS!)[R6/R15 Compatible] (the updated version is a link at the top)

Note that that tutorial is actually broken, but it seemed like a step in the right direction

could you use the player’s HumanoidDescription to put their shirt’s textures on the hands, as well as their character’s skin color?

yeah, i could. I have tried it, it’s just i have a hard time making the viewmodel share animations with the player. Because if I attach skins the forced viewmodel, i have to animate 2 things

i don’t quite understand what you mean by “share animations with the player”, you can just make the animations and apply the texturing via a script to make it just show up like how the player would, right? why would you need to animate 2 things, this will just be adding on to the viewmodel model

Sorry, forgot to clarify that. So, before, I tried using a tutorial by XeraDev on Youtube, but I realized that it was using a forced viewmodel, and I didn’t want that. So I try to rotate the players arms, but that doesn’t work either cause of the arms not rotating relative to the camera. Then, I try to rotate the arms relative to the camera, but that looks… a bit funny.

Forced viewmodel I made:

let me make sure i’m getting this right, so you can answer these:

  • the goal is to have the arms look like what the player’s arms would look like right?
  • it’s supposed to always be blocky correct?

yeah. I wanted my game to be third and first person, so I wanted it so that the arms looked the same. By blocky, I mean the default r6 (cause r6 is awesome)

was this in regards to humanoid description shirt textures and character skin color (what you want) or not? i don’t see what other solution there is, you’d just apply the player’s textures to your viewmodel and it would have the desired result.

Yeah, i do mean that. I tried cloning the players arms, and I tried applying the textures to a forced viewmodel.

why cloning the player’s arms? you shouldn’t need to do that if you are already applying the textures & skin color

if you just have a blank viewmodel with hands and apply it onto those, it should work fine, i’m confused on what the issue would be

Hmmmm… good point i gotta try that out. Thanks for the idea!

1 Like

I got it!
Screenshot 2025-05-05 at 6.54.41 AM
r15 to r6, but thats fine i can just fix that later

code for anybody else who wants to use it: (lazy as heck and scripted in 20 seconds but whatever)

local player = game.Players.LocalPlayer
local character = player.Character

local id = player.UserId

local humanoidDesc = game.Players:GetHumanoidDescriptionFromUserId(id)

local viewmodel = game.ReplicatedStorage.Viewmodel:Clone()

viewmodel.Parent = workspace

viewmodel.Humanoid:ApplyDescription(humanoidDesc)

This is expecting that there is a basic rig in ReplicatedStorage

it would be nice if you marked me as the solution :3

1 Like