How can I mirror a race track?

Greetings! So if you played Mariokart before, you will know that most of the games have Mirror mode, which flip a race track, giving the effect of “mirroring”. I want to add it to my racing game, except that I do not know how to give the mirror effect without adding more stuff to storage.

If you could tell me how to do it, please let me know!

Thanks in advance!

2 Likes

Hi!
Could you attach a reference to what you’re trying to aim for?

1 Like

This is from Mariokart Wii. Left side is 150 CC (Normal mode), right is Mirror mode.

1 Like

I would personally make most of the map in blender. And then make unmirrored and mirrored version in replicatedStorage.

You can mirror objects in blender, but not in studio.

1 Like

What about with a script? it has to be possible. Also, a ton of maps are already created.

Im guessing it could have something to do with PVInstance:PivotTo(), but CFrames are a weakness of mine.

1 Like

Well, you could mirror all the stuff in their positioning and orientation in for example in the Z axis, where 0,0,0 will be the mirrorpoint.

But you cannot mirror meshes or parts by setting Size = “-1,-1-1” as you can in Blender.

This is the type of mirrioring you can do, it isn’t quite mirroring.

1 Like

Or like this. But again, it’s not mirrioring the objects.

1 Like

Oh boy, I’m gonna love this update.

Do you need help with the theory or the syntax?

What is this? I have never heard of that before.

If anyone is wondering of any solutions I tried, I experimented with a few tracks and put these in the Command Bar:

for _, Parts in pairs(workspace.Under_The_Sea:GetChildren()) do if Parts:IsA("BasePart") then Parts.Position = Vector3.new(0, 0, 0) - Parts.Position end end
for _, Parts in pairs(workspace.Under_The_Sea:GetChildren()) do if Parts:IsA("BasePart") then Parts.Orientation = Vector3.new(0, 0, 0) - Parts.Orientation end end
workspace.Under_The_Sea:PivotTo(workspace.Under_The_Sea:GetPivot():Inverse())
for _, Parts in pairs(workspace.Under_The_Sea:GetChildren()) do if Parts:IsA("BasePart") then Parts.CFrame = CFrame.new(0, 0, 0) - Parts.Position, Parts.Orientation end end

Obviously, these won’t work now unfortunately. This is more complicated than I thought it would be.

1 Like

You could use Wingman8’s plugin Wingman8 build tools - Roblox to mirror the entire track.
I’m not so sure that having a bunch of stuff in storage will affect the game. I’m nowhere near a pro at this, but if it isn’t in the workspace then it isn’t affecting the game. Sure you’ve got more to load into ReplicatedStorage when a game starts, but it won’t affect the game after that.

Is there a tutorial on YouTube perhaps on how I am able to mirror tracks with this plugin?

1 Like

You can just use the Mirror tool, select a Part that is right at the edge of the map and a thin yellow plane is displayed that shows the mirror axis. Then left click a part on the map (preferably a major one that is a direct child of the Map Model. Now click the g key which allows the plugin to select the Parent of the Part you selected (until you have the whole Map Model selected) and press the space bar. It should mirror the entire map. You may have to watch out for some things like Meshes and decals, but it should get most of it right.

1 Like

The theory is what you write meaning something like “when space is pressed, jump” the syntax is what your actually writing, in this case it’s Lua. I’ve heard that a lot of scripters know the syntax but have trouble with the theory, but I’m the opposite where I’m good with the theory but I’m to lazy to learn the syntax.

So, do you know how to write it but not what to actually write? Or do you know what to write but not how to write it? I can help if you don’t know how to write it.

1 Like