Mouse enter won’t be great for this as gui objects are counted as squares.
It is the easier option.
If you want it accurate then we can do a more mathsy approach.
Get the distance of the mouse to the centre of the screen.
You can get the distance using (pos1 - pos2).magnitude
You can get centre of screen by taking the absoluteSize of a screenGui and halving it
e.g. local centre = Instance.new(“ScreenGui”).AbsoluteSize/2 (might have to be parented to playerGui)
then if you check if the distance is less than the radius of the circle, it means we can have then detected when it is in the circle.
Next is detecting when we are in the segments.
For this we will need to calculate the angle of the mouse from the top (think of it like bearings).
For this we can use dot product to figure out which quadrant we are in.
Your first vector should be the vector from the centre to the mouse’s position
e.g. local mouseVec = (Vector3.new(mouse.X, mouse.Y) - centre)
then you will want to dot product the mouseVec with a up vector. Remember to take the unit vectors.
local UpOrDown = mouseVec.Unit:Dot(Vector2.new(0, 1))
if TopOrBottom > 0 – then we are in the top half of the wheel
else – we are in the bottom half
then if we do the same but with the right vector we can then figure out if we are in the top left, top right or bottom left or bottom right.
local LeftOrRight = mouseVec.Unit:Dot(Vector2.new(1, 0))
if LeftOrRight > 0 – then we are in the right side
else – the left side
Then all we have to do is to convert to degrees and decide how much of an angle it should be to trigger. In this case, 360 degrees / 8 segments = 45 degrees, but since the top is already half rotated then
top segment is when the TopOrBottom dot product is within -22.5 and 22.5 degrees
Remember we can convert the dot product to degrees.
You should be able to figure the rest with this.
This is a more complicated way but it is more accurate. Sorry I typed this on the fly so it might be a bit crude.
This is how I did my own wheel thing a few years ago