BasePart.BackParamA
Code Samples
Motor Control
-- Paste this into a Script inside a part with a Motor SurfaceType
local partMotor = script.Parent
-- Place a brick called "MovingPart" so it is touching the Motor surface
-- For this example, we use TopSurface, TopSurfaceInput, TopParamA and TopParamB
-- However, this will work for all faces (NormalId): Top, Bottom, Left, Right, Front and Back
-- A function to quickly set all surface properties at once
local function setFaceSurfaceInputParams(normalId, surfaceType, inputType, paramA, paramB)
local surfaceName = normalId.Name -- e.g. "Top", "Bottom", etc
-- Syntax Note: in Lua, part.Something is the same as part["Something"]
-- The difference is that the latter allows us to use a string ("Something"), while
-- the former requires use of an identifier (.Something). Below, we build of each the surface
-- properties below by concatenating the surface name with the property postfix.
-- Set "___Surface", eg "TopSurface"
partMotor[surfaceName .. "Surface"] = surfaceType
-- Set "___SurfaceInput", eg "TopSurfaceInput"
partMotor[surfaceName .. "SurfaceInput"] = inputType
-- Set "___ParamA", eg "TopParamA"
partMotor[surfaceName .. "ParamA"] = paramA
-- Set "___ParamB", eg "TopParamB"
partMotor[surfaceName .. "ParamB"] = paramB
end
local normalId = Enum.NormalId.Top
while true do
-- Set to NoInput, where the motor will not operate at all
setFaceSurfaceInputParams(normalId, Enum.SurfaceType.Motor, Enum.InputType.NoInput, 0, 0)
task.wait(1)
-- Set to Constant, where motor rotational velocity = paramB
setFaceSurfaceInputParams(normalId, Enum.SurfaceType.Motor, Enum.InputType.Constant, 0, 0.25)
task.wait(2)
-- Set to Sin, where motor rotational velocity = paramA * math.sin(time * paramB)
-- Since we're using pi (~3.14), the frequency of rotation is 1 second (per definition of sine function)
setFaceSurfaceInputParams(normalId, Enum.SurfaceType.Motor, Enum.InputType.Sin, 0.25, math.pi)
task.wait(3)
end