Yeah dont worry this is actually a very advanced topic, the link that pixel sent earlier to the tutorial is in my honest opinion way to complicated and just complicates everything;
With that being said… I have created this exact sort of system and it’s actually very well made; you’ve given me the idea to actually make it a module that people can actually use
Np, its nice to hear that i gave you a idea, and i also think that the link That pixel sent is very complicated
and yep im talking about something like the video u sent, and i really like the gui
(idk why but this might sound like that i want to have that exact thing, no it doesnt mean that, but well if u will of course allow me to use it i would, but this doesnt mean i want to, so like… yea i just thought that it kinda sounded like that i just wanted to say that its nice)
Thank you man means alot its from a project I was working on back in September but the scope was too large and I decided to abandon it but I still have the placement system, so im going too try to create a nice module that people can use to make it super easy to setup, thank you for giving my old project a purpose again
Np, i hope that you will find fun trying to make it so that it can easily help people like me, it would be nice if you could reply when you have a solution, have a great day/night/evening/afternoon and what ever time names there are.
Not sure if I can contribute a lot here, but you for starters need a snapping function.
local grid_size = 4
function snap(x)
return math.floor((x / grid_size) + 0.5) * grid_size
end
function snapVector(v)
return Vector3.new(snap(v.X), snap(v.Y), snap(v.Z))
end
It’s very short and simple but this should make sure positions are always rounded off and snapped to the specified grid size.
alright, thank you very much for trying to help me, sadly i only know 1% Lua Code, so… i cant really do much with the code that you gave me, but still thanks that you tryed to help me
This is the snapping used in my building game. My game also has relative grid so that’s what the relative position stuff is
But in a summarized way:
Position here is not a vector, you need to do the math for every axis. You can also have a different offset and grid size per axis
You’d also usually want the offset to be (by default) half of the grid size or the part size, or well, it will depend on the height of the surface you are building on, if the build system doesn’t use a relative grid
One other thing, you’ll have to play a bit with Mouse.Hit, to prevent the grid system from placing parts inside of the hovered part, basically rounding the wrong way
(Video of the issue I am talking about)
Here are the two “best” options (in my opinion)
– Make it so position is a bit before where the mouse ray collides with the hovered part
-- This returns a CFrame 0.0001 studs closer to the camera
local TranslatedCFrame = Mouse.Hit * Vector3.new(0,0,0.0001)
Mouse.Hit points towards the camera (on the Z axis), which makes it very easy to translate
– Use the normal of the mouse hit to offset the position
This solution is quite good, as it’s perfect for making it so you can place parts on spheres or on top of wedges, while the previous solution works, it has the downside of allowing cubes to be placed diagonally to other cubes, which isn’t ideal
This is how it looks in my game
I’d say you should definitely try familiarizing yourself with Luau a bit more before approaching something like a grid placement system. These types of systems are complex, and usually involve lots of advanced concepts such as object-oriented-programming. Try working on some smaller projects first, and work your way up to the big ones!
I have made two resources that might help you make a placement system for your game:
Placement Service
I created Placement Service so it’s easy to make a grid placement system. The module is well documented and also has its own dev forum tutorial.
My YouTube series on this
I actually made a full series on making a placement system based on my module Placement Service. If learning how the system actually works is your thing, I explain everything you need to know to make a basic placement system from scratch!
i know, the problem is i got no other ideas, and i find it kinda hard to learn Lua code, sadly the Offical Roblox Lua Code Guide book didnt helped that much, and another book i ordered to help me learn lua code turned out to be a fake book so a scam, in the future i will probably do other Methods to learn lua code, but currently i cant do much to learn it, still thanks for your respond
thank you very much, i cant really do anything with it cuz im not very good in programming yet, but still thanks for your help and it helps me a bit to understand lua code more, thank you very much
I’m trying to make it as simple and seamless possible to set it up with no extra steps
More Features I’ve Created/ WIP
Datastore Integration
It will support plot saving for players right out of the box, and load them when you set a players plot, still working on like the actual saving buildins but the backbone of it is integrated into the placement system!
self:SetOwner(player : Player)
Basically this a function you’ll be able to call onto a new Placement class object, that will set the owner based on who the player has passed, and it’ll automatically check if the player has already claimed already aswell
Rotation and Dimension Flipping
When you rotate an object on the grid it won’t only rotate the currently piece your building with 90 degrees, but it will also flip the size dimensions relative to the grid; so you get some accurate nice rotation!
I’m starting to actually work on the client sided functions for building right now so things like, EnteringBuildMode, ExitingBuildMode, Rotating, ChangingBuildingPiece
Just some basic functions youll be able to pull from the module and use anywhere you would like to, were making great progress so far!
Sounds very nice, can you maybe explain “Self:SetOwner(player : player)” a bit more? is it a command or a function in a script? just want to know
its nice to see that i gave you an idea, and i hope you are having fun to create it
thank you very much for the help, however i have already seen the video before but got confused quickly, its a good tutorial but didnt really helped me much, still thanks for your help!