A Part, and the Four Properties That Matter
A new block falls to the floor, drifts through walls, or hangs in mid-air, and a handful of checkboxes decide which. Toggle each one and watch the same part stop being the same object.
A new block falls to the floor, drifts through walls, or hangs in mid-air, and a handful of checkboxes decide which. Toggle each one and watch the same part stop being the same object.
A part is the only building block there is
Every wall, floor, laser, coin, and platform in every Roblox game is a Part. There is no separate wall type or platform type. The difference between a decoration and a deadly obstacle is entirely which properties are set and which script is watching it.
That is a genuinely good design and it has one consequence worth internalising: when a part behaves strangely, the answer is always a property. Not a hidden setting, not a mode, not something about how you inserted it. A property, visible in the Properties panel, that is set to something you did not intend.
Anchored decides whether physics applies
An unanchored part is subject to gravity, collisions, and every other force in the simulation. An anchored part is not. It stays exactly where you put it, forever, and nothing can push it.
Every static piece of your obby should be anchored, and forgetting is the single most common first-day mistake. You build a beautiful floating course, press Play, and the entire thing collapses into a heap on the baseplate before you have taken a step.
local platform = workspace.Obby.Platform platform.Anchored = true -- stays put, ignores gravity entirelyplatform.Anchored = false -- falls, tumbles, can be pushed by a playerCanCollide decides whether anything stops
CanCollide is whether the part is solid. With it off, players and objects pass straight through as though the part were not there — while still seeing it perfectly.
It is easy to assume this and Anchored are the same idea in different words. They are independent, and all four combinations are useful.
Anchored, CanCollide on
A floor. The overwhelming majority of an obby is this, and it is what every static part should be unless you have a reason otherwise.
Anchored, CanCollide off
A trigger volume, or a decoration players walk through. Combined with Transparency = 1 this is the invisible detector every checkpoint uses.
local part = workspace.Obby.Platform part.Anchored = true part.CanCollide = true part.Transparency = 0.0
Change one at a time. Each of these three is independent of the other two, and almost every strange part behaviour is one of them set to something you did not intend.
Transparency is not the same as gone
Transparency runs from 0 to 1, and it changes exactly one thing: how much you can see through the part. It does not affect collision, physics, or whether scripts can find the object.
A part at Transparency = 1 is still completely solid. That is the invisible wall that stops players leaving the map, and it is also, when unintended, the reason a player is blocked by nothing in the middle of an empty room.
Position moves a part; CFrame also turns it
Position is a Vector3 — three numbers, X, Y, and Z, describing where the centre of the part sits. Y is up, which is worth memorising now because every height comparison in this track depends on it.
local part = workspace.Obby.Platform part.Position = Vector3.new(0, 20, 0) -- 20 studs up, centredpart.Size = Vector3.new(12, 1, 12) -- wide, thin, deep -- Moving relative to where it already is:part.Position = part.Position + Vector3.new(0, 5, 0)CFrame is position and rotation in one value. Anything that needs to face a direction — a spinning obstacle, a launch pad, a camera — needs CFrame rather than Position, because Position alone cannot express a turn.
There is also a subtler reason to prefer it. Setting Position on an unanchored part asks the physics engine to move it and lets the engine resolve collisions on the way; setting CFrame places it there outright. When you need a part to be somewhere exactly, CFrame is the one that obeys.
-- Place it, and turn it 45 degrees around Y at the same time.part.CFrame = CFrame.new(0, 20, 0) * CFrame.Angles(0, math.rad(45), 0)Key takeaways
- Every object you build with is a Part. The difference between decoration and obstacle is properties plus a script, never a different type.
- When a part behaves strangely, the cause is a property. It is visible in the Properties panel and it is set to something you did not intend.
- Anchored means physics ignores the part. Anchor every static piece before your first test, or the course collapses on Play.
- CanCollide means the part is solid. It is independent of Anchored, and all four combinations are useful.
- Transparency only changes what you can see. A fully transparent part is still completely solid — that is the invisible wall.
- Making something vanish takes both Transparency = 1 and CanCollide = false. Setting one is the classic broken-platform bug.
- Position is a Vector3 and Y is up. Every height comparison later in this track reads Position.Y.
- CFrame carries rotation as well as position, and places a part outright rather than asking physics to move it there.
Quick check
Answer these to unlock the next chapter — 3 of 4 to pass. You can retake it anytime.
Answer every question to check.
Make a free account to read on
Every chapter is free — an account is how your progress, XP, and streak follow you from your laptop to your phone, and how you show up on the leaderboard. No payment, no trial.