Over-The-Shoulder Camera System

Cool, but may I ask where the new module is and where I can enabled the feature? Thanks!

You can take the model again since I updated it. The feature is enabled by default so it will always enable camera without resetting the angles.

It seems to work about 85-90% of the time however sometimes I find myself at very random horizontal angles. Was wondering if you knew anything to get around this? Sorry to use your time like this :sweat_smile:

Edit: Currently uploading a video demonstrating this to YouTube, will reply with a link.

1 Like

Hey thanks a lot for such a detailed report. I will look into this and fix it as soon as possible. It is probably something wrong with my maths.

Thanks, youre an awesome Dev for working with and taking suggestions from the community btw.

No problem. You are awesome for helping to develop a helpful resource. With that, I would like to say that the problem seems to be fixed now. Take the model again and see if it works for you.

It does appear to be fixed, thanks so much and I hope that we can continue to see great resources for people to use!

1 Like

I have been looking for an OTS community resource like this for so long, so much so that it has stalled the progress on my project. Now it’s finally here!

I haven’t jumped too deep into exploring this yet, but thus far it seems like an extremely well-designed and efficient system. This changes everything.

1 Like

I noticed an issue with the “IsCharacterAligned” feature you added, in which you lerp the CFrame of the HumanoidRootPart. This is common in over the shoulder systems, but is flawed because the result is that when a character is moving backwards or laterally, he will twitch because the user input (which wants the character to face one direction) is basically fighting with the code that is arbitrarily trying to set the direction the character is facing.

Alternatively, you can adjust the user’s settings in the code, with something like

UserSettings():GetService("UserGameSettings").RotationType = Enum.RotationType.CameraRelative

This will automatically change the character’s behavior so that it faces the direction of the camera, and is much simpler and more efficient in my opinion.

It’s worth noting that when I made this change to your code (substituting lines 263-265 with the line above), the character movement was much smoother. However while moving the camera does seem a little choppy.

Additionally, the bool controlling the IsCharacterAligned function on line 279 under

function CLASS:ConfigureStateForEnabled()

is set to “false”, so it didn’t actually work when I set it to true on line 47.

6 Likes

Hey thank you for your contribution. I will make changes from your suggestion. The character alignment feature is not turned on by default (you have to explicitly call SetCharacterAlignment function after enabling the camera system) that is why in the ConfigureStateForEnabled function you see it being turned off.

By the way, ConfigureStateForEnabled and ConfigureStateForDisabled functions are included so people can customize the defaults for their camera. If you wanted character to be aligned by default when you enabled the camera system, then you would do what you just did.

Thanks for the clarification! :slight_smile: Glad to have helped.

Im trying to do the camera alignment thng but it doesnt work, am I doing something wrong?

local OTS_CAMERA_SYSTEM = require(game.ReplicatedFirst["OTS Camera System"])
OTS_CAMERA_SYSTEM:Enable()

OTS_CAMERA_SYSTEM:SetCharacterAlignment(aligned)

Output:
image
image

3 Likes

Is there a way you can disable and enable the class within the module script? Or maybe false disable it, because I want to be able to toggle first person using the module.

1 Like

Suggestion:
If you die while the camera is enabled, if you disable it, it’ll send your camera to where you died. It’d be great if you could fix this.

1 Like

Works like a charm! I used this to transform my first person shooter game into a third person shooter and it feels so much better to play that way. I’m watching this thread so I’ll be in the know when mobile and controller support are added. Good stuff, my guy!

Edit: Seems OP got terminated. That’s a shame, I was looking forward to updates on this. :frowning:

4 Likes

Hii, where’s this exactly? :smiley:
image

1 Like

Where do i put the module script and also i just used local OTS_CAMERA_SYSTEM = require(script[“OTS Camera System”])
OTS_CAMERA_SYSTEM:Enable()
or others mind if i get help?

1 Like

Xbox and mobile support coming? I would love that!

3 Likes

Same here, I hope somebody picks up where Arbeiters left off and adds that in.