Easy Camera Distortion and Manipulation (GONE WRONG) **Professional edition** CUSTOM SHIFTLOCK NEW || Roblox Roblox Studio

You can use the Magic Formula in any way

Here is a simple example in-game using a modified version of the script in the article above

The code above is put in a local script under StarterCharacterScripts and accurately emulates the average CSGO twitch streamer’s gameplay

And all I did was reduce the “R11” component of the formula (which is the one responsible for squishing the top and bottom of the screen, which in turn, makes the gameplay wider

image

Hope this helps!! c:

23 Likes

Dying from laughter, thank you so much.

19 Likes

this was by far the best thing ive read on this site
thank you for spreading the word about this cool thing

10 Likes

when the meme post is actually comedic
touche sire

16 Likes

You made my day in every way we need more posts like these and the best part is that I learned something.

I’m a sociopath

100% confirm that is blackmagic

jokes aside I hope the mods dont remove this gem they cant because this sooo useful I learned soo much. and @BurningEuphoria U are my new role model

also heres the 3blue1brown tutorial Vectors | Chapter 1, Essence of linear algebra - YouTube you explained this so well. I have delighted with the best review of vector magic

3 Likes

This is the most scientific article I’ve ever read. So much information. I feel like my brain doubled in size. Thank you for this masterpiece.

…Also pls help, how to unskew my vison? I can’t walk straight help

1 Like

Finally, I can fully recreate CSGO in roblox

I have all the tools I need, including this…

2 Likes

Post goes crazy!! very informative :revolving_hearts: :heart_eyes_cat: :hot_face: :hot_face: :fire: :fire: :fire:

3 Likes

i love the humour in this post

thank you

2 Likes

You have to multiply the camera by the inverse of the last coordinate space to work properly.

1 Like

Put simply, a basic CFrame operation.

Just use a script to return the MAGIC FORMULA to the default:

CFrame.new(0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1) < This is returns the Camera back to it’s default CFrame

local UIS = game:GetService("UserInputService")
local Run = game:GetService("RunService")

local Cam = game.Workspace.Camera
local Squish = 0.5

Run.RenderStepped:Connect(function()
	local MAGIC_FORMULA = CFrame.new(0, 0, 0, 1, 0, 0, 0, Squish, 0, 0, 0, 1)
	Cam.CFrame = Cam.CFrame * MAGIC_FORMULA
end)

UIS.InputBegan:Connect(function(Input)
	if Input.KeyCode == Enum.KeyCode.E then
		if Squish == 0.5 then
			Squish = 1
		else
			Squish = 0.5
		end
	end
end)

This script above lets you toggle a squish effect for the camera by pressing E

4 Likes

what a pro scripter also I have a question does editing The matrix Cframe of a part work? or does editing the cframe matrices of a camera have the matrices only use?

Sorry I’m a bit confused by what you mean

Just in case you’re talking about R20, R21, and R22, those don’t have to be multiplied by the inverse even though it’s negative LookVector

A positive R20 turns the camera right and negative to the left
R21 to the right and when it’s negative it turns to the left
and R22 when it it’s positive moves the closer to the character the closer it is to 0 (pretty much changes FOV) but once it goes negative, it starts flashing and giving your screen a seizure and can kill the character

Even if that’s not what you were talking about, this brought light on the glitchiness of R20, R21, and R22

Like this is literally what happens when I put a negative R20 :skull:
Gonna update the page to make the info more accurate

4 Likes

I am 99% sure you can modify the matrix of a part but you have to be super accurate with your inputs unlike with camera CFrame where you can seemingly modify each component to their on values even if they violate how it’s supposed to work normally

Here is an example of what happens if you don’t put it accurately. It just ends up causing the part to noclip into the backrooms.

It’s very odd tho because it’s still there (as shown by the little blue dot; don’t mind the box around it’s part of the character)

And you can easily snap it back to reality by putting it’s CFrame to something that is valid

Now, there might be some undiscovered or very obscure thing that can occur when you tingle with a part’s CFrame like how it can affect the Camera. But rn there don’t seem to be any and probably isn’t any (There might be! Or might not!)

Imo, it is best to not mess around with manipulating the matrix of a part’s CFrame as there are much easier ways to change position and rotation like pretty much everything on the new roblox documentation thingimajiggy


Though I hate how it takes so long to scroll through because of the layout so if you prefer (which I prefer too) just use the old developer page :heart_eyes::heart_eyes::heart_eyes:

https://developer.roblox.com/en-us/api-reference/datatype/CFrame

I do miss it too

can confirm this happened when testing

so these is basically no use to the Matrix unless its for cameras? okie
also U should do more specil edition :hot_face: tutorials like more on Cframe. like wth is .from axis angle I know cframe magic but HOLY I cant this Cframe black magic u must teach plz :pleading_face: :point_right: :point_left:

BAHAHAHAHAHAHAHAHAHA BRO – THANK YOU SO MUCH

Cant wait to make my roblox avatar spawn as pixel

Can you make more tutorials pls??? :money_mouth_face: :moneybag: :pleading_face: :pray: :cancer:
Specifically on RayCasting :chart_with_upwards_trend:

2 Likes

Sorry late reply,

Well I’m not exactly a CFrame expert myself, so can’t exactly say for sure if matrix is useless (probably better in certain scenarios because it’s a feature).

If you’re curious tho, I suggest searching up how matrix works or asking a better scripter about it.:+1::+1::+1::+1:


Personally all I use for CFrames are:

CFrame.new() – New CFrame

CFrame.lookAt() – New CFrame + Makes the object face another part

CFrame.Angles() – Angles thingy (honestly have no clue how this works besidesthat it uses radians instead of degrees

CFrame.LookVector() – Gives a Unit Vector in the direction of the CFrame (a bit hard to explain but it’s pretty simple and has alot of uses for creating projectiles, making movement.) Also has “UpVector” and “RightVector” counterparts

CFrame:Lerp(TargetCFrame, Alpha) – Basically it’s kinda like tweening. So it moves the CFrame towards the TargetCFrame by using Alpha. (Lets say Alpha is 0.5, then the function will return a CFrame that is in middle of the original CFrame and and TargetCFrame)

^^^ Great for slowing down an object when it approaches a certain position / rotation (If you want the formula for lerp (which is pretty basic), just search up: “Lerp Formula”)

and I also use the math formulas given by the developer page


These are usually my most frequently used CFrame stuff, as they are simple but can do so much with it

The other stuff are also super helpful too!

Example: CFrame:ToEulerAnglesYXZ() can convert the rotation value of a CFrame to orientation form, This is incredible for making objects face the direction of a camera or any other object but you don’t want it rotating up and down (Like a ship)

image

1 Like


oki!! (even though there might be one already)

will attempt to make it pretty in-depth

5 Likes