Run it
Copy the script and paste it into your executor.
-- [[ THE ULTIMATE SONIC FORCES 2D EXECUTOR ]] --
local player = game.Players.LocalPlayer
local char = player.Character or player.CharacterAdded:()
hum = char:()
hrp = char:()
CAS = :()
RunService = :()
TweenService = :()
spr_Idle =
walkFrames = {
, ,
, ,
}
jumpFrames = {
, ,
, ,
}
_, v (char:())
v:() v.Transparency =
v:() v.Handle.Transparency =
bb = .(, hrp)
bb.Name =
bb.Size = .(, , , )
bb.Adornee = hrp
bb.ExtentsOffset = .(, , )
img = .(, bb)
img.Size = .(, , , )
img.BackgroundTransparency =
img.ScaleType = .ScaleType.Fit
img.Image = spr_Idle
currentSpeed =
maxWalkSpeed =
boostSpeed =
accel =
isBoosting =
animTimer =
()
closest, dist = ,
_, v (:())
v:() v.Parent ~= char v.RootPart
mag = (hrp.Position - v.RootPart.Position).Magnitude
mag
airborne = hum:() == .HumanoidStateType.Jumping hum:() == .HumanoidStateType.Freefall
moving
currentSpeed = .(currentSpeed + accel, isBoosting boostSpeed maxWalkSpeed)
hum.WalkSpeed = currentSpeed
currentSpeed = ; hum.WalkSpeed =
airborne
animTimer = animTimer + (dt * )
img.Image = jumpFrames[(.(animTimer) % #jumpFrames) + ]
moving
animTimer = animTimer + (dt * (currentSpeed / (isBoosting )))
img.Image = walkFrames[(.(animTimer) % #walkFrames) + ]
img.Rotation = .(currentSpeed / , , )
animTimer = ; img.Image = spr_Idle; img.Rotation =
img.ImageColor3 = isBoosting .(, , ) .(, , )
)somic… you get Sonic

Universal