So I found a bug. Unity’s collisions aren’t replaying exactly the same between runs. This means that there are very slight errors in player position and player velocity. This normally isn’t an error but eventually it diverges enough to make a noticeable difference. This means I need to either figure out how to get Unity to replay the same every time, or just write my own collision code. Being the overly ambitious person that I am, I decided to write my own collision code. I’ve done 3D collisions before with kronologic64. 2D collisions are quite a bit simpler. I know I will be able to get it to work, this will just set me back a bit since I need to implement a core part of the game and then migrate existing code for the abilities to use my collision code instead of relying on Unity.