Making a physical slider


I am trying to make a slider but it will not be a widget, it will be a physical thing. To demonstrate what I want to do, I’ll provide some screenshots

Each one of the items Easy-Medium-Hard-Back are a static mesh that takes the section as a parent. The text renders take their own slice as a parent, same goes for the tick icons. Now what I want to do is when I click on the tick icons, I want to slide them on their own local space. For each tick icon, the position and rotation are identical: 40.0, -420.0, 30.0 and when you change the value on the Y axis, they get close to center, so the Y axis is the thing to manipulate.

For this purpose, I used this algorithm:

  • When clicked on the tick, turn a boolean on
  • On each tick if the boolean is true, by using the ConvertMouseLocationToWorldSpace node, get the world location where the mouse points
  • By using the Inverse Transform Location node, convert it to the local space of the tick mesh
  • Change the Y axis of the location of the mesh with the mouse pointer

Now everything looks alright but here is the blueprints and what I read the values as: (Inverse transform provider is the tick mesh) Value is: 529, 624, 8 (Inverse transform provider is the parent of the tick mesh) Value is: -33, -200, -519

And here is the closest value I could get, I found it out by accident. Basically on the first blueprint screenshot, if I connect World Direction pin of the ConvertMouseLocationToWorldSpace, then the value I get is: 40, 420, 10 (Thickness of the tick mesh is 20 so this is the surface value). Now this can be used yes, but the problem is, when I move the mesh at this moment, the direction value changes which pushes the mesh on a constant speed towards the direction I am moving my mouse, it is like applying a force to it.

What is wrong? Why cant I just get the value 40, -420, 30 from any of my attempts (Last one doesnt count I think). Is there any other way I can follow if this does not work?

Edit: I found out where I was wrong, so the world location for the mouse is considered to be the surface of the camera, so it is behind the object, not projected on it. So now I am facing a new problem, I need to project the mouse pointer on the object by using line traces, but somehow it just doesnt work.

Here is the setup I used for it:

The mesh I set the collision for is the slice of the tick I am clicking on and here is the debug line for the trace, it obviously hits it, but that doesnt trigger the line trace

Updated 10char

Ok it was really silly of me. After trying almost everything, I found out that the problem was about ignore self being ticked.

Problem solved.