How would I make an actually centered FPS ADS system?

the viewmodel will look down at an 90 degree angle by default, you can either realign it within the animation or realign it in the script itself, and on a side-note I’ve just tested out animations with the gun system, you actually can’t move the weapon itself up or down, sorry about that. however I’m sure you can fix this by doing something along the lines of changing the rest and aim position to the animation’s specificed weapon offset using KeyframeSequenceProvider and the likes, or if you don’t want to go to the trouble you can just change the ADS to offset the weapon’s current CFrame to one you see fit, which would allows for animating but would bring on new problems of its own, but again, it’s something for you to figure out
edit: nevermind, you can still animate it just fine, my half awake self tried to animate with the Aim part itself, just rig everything to the handle, which should be rigged to the Aim part (with the aim part being the part0) and move that whenever you need to move the weapon and it should be good

Basically rig everything to the Handle, then rig the Handle to the Aim part? I used the aim part as the main weapon bone and the arm right just stays in place instead and overrides the animation. I used the aim part to move the handle and the arm altogether in animation.

you can’t move the Aim part in animations, from my testing everything else seem fine, could you describe your problem more clearly?

Could you upload here so that I could check out what’s wrong?

I used a different version which is tangled in with contents I’m not willing to share, but it’s still handled very similarly to my posted version, you’ll have to tell me what kind of problem you’re running into

Here’s the .rbxl file. If you try playing it, the right arm is stuck in place, overriding the animation. (660.3 KB)

the problem comes from the way you’re handling the bind, change

local bind = gun.WeaponBind
bind.Parent = viewmodelRightArm
bind.Part0 = gun.Handle
bind.Part1 = viewmodelRightArm

to

local bind = gun.WeaponBind
bind.Parent = viewmodelRightArm
bind.Part0 = viewmodelRightArm
bind.Part1 = gun.Aim

the former makes it so the arm would always be moved with the Aim part, and the latter will gives you more freedom however requires you to make your own WeaponBind for every weapon (hence why I stated it’s efficient). you can choose to use either one according to which pros and cons you prefer

to make a weapon bind with the aforementioned (inefficient) method, you need to put the weapon inside the viewmodel, and position the weapon to where you want it to be held (when no animations are played), then use a plugin of your choice, I use custom character creator, to bind the aim to the arm, with the aim part being the Part1, copy the newly created motor6d and make it the weapon’s WeaponBind. a more efficient way of doing this would be to position the weapon to the arm and make a bind with a script, then move it with animations, up to you on how you do it

excuse the long delay my internet connection was out for most of the day

Actually, I ran it in-game and disabled the local script. Then I played with the C0 CFrame value in order to get what I want, then set the C0 of it to that CFrame which I printed and copied and pasted in the script, would that work fine? Or is there a better way other than what you just suggested? (optional answer)

if you make it a pre-set C0 value you’ll run into the problem of needing to make a new if condition for every weapon that gets screwed because the C0 is set according to 1 weapon and nothing else while the aim position can vary

1 Like

I tried the block of code correcting my old one and the results are still the same, though. Did you test it?

I have, I did replaced the viewmodel with a replica because I couldn’t select it for some reason and it worked fine, didn’t save the file though, I have no ideas what’s up with this

and on a side note, I can’t actually see your animations, they’re locked to only viewable to your client in studio, I used my own subtitude, which worked fine after the “fix”

Is it possible that the problem could be with the view model?

Let me clarify that the problem here is that even when I move the entire arm using the aim part, the arm stays as it is along with the weapon no matter what; when I make the part0 the right arm, it goes weird. When I make the aim part the Part0, it goes normal. but of course the main problem is that the animations aren’t working as they should, the arm stays in place.

Here’s an example. https://gyazo.com/9e32a0886978ab9d51ac358f489c8ff6

It does not capture the shooting animation and the arm just tays in plays. The reload animation makes it so that the left side of the gun is facing the player, and the left arm plls out the magazine, but the arm still stays alon with the weapon.

here’s a quick rewrite that’s more reflective of an actual gun framework with animations working, see if you can figure something out gun.rbxl (25.2 KB)

edit: replace

local bind = gun.WeaponBind
bind.Part0 = viewmodelRightArm
bind.Part1 = gun.Aim

with

local bind = gun.WeaponBind
bind.Part0 = viewmodelRightArm
bind.Part1 = gun.Handle

and change the bind accordingly, animations should work fine then, tell me if there’s still any problems

edit 2: apparently this would make animating the rig impossible, I feel like I’m spending too long on a problem I don’t have as much understanding in as I should, you’ll probably have to figure the rest on your own, sorry

1 Like

Just a question then; what should I change the Part0 and Part1 to once the player reloads?