Greetings Good People. I have an app wherein I have 4 cubes in 4 different slots. When the user drags one cube from its slot, once the user lets go of the cube, it should find the closest slot, go to it, and if there is another cube already in that slot, it should go to the slot that was just emptied by the incoming cube. In other words, the cubes should swap positions. My code implements this by checking in Update, whether the user has started the touch process (the final version on the device) or whether the OnMouseDrag (overridden as its own method) is called (on the computer for testing). Once the drag process starts, then flags are set (e.g. doSwap = true so that a function called in Fixed Update will execute its code since the doSwap bool will equal true when it checks it), and methods are called in FixedUpdate to implement the process. My problem is that sometimes it works, sometimes it doesn't. While I can always move the cube and it will go to and find the closest slot, sometimes it will swap locations with a cube already there, and sometimes both cubes stay there. Any ideas on how I can fix this? Is there a way to get this to run consistently each time? I wonder if it is a timing issue of some kind since it works sometimes but not all the time. So I wonder if there is a better way than a flags based system where functions run in Fixed Update if certain boolean values/conditions are met, and then stop running when those conditions are not true. Thanks.