A lot of projects on Scratch use velocity-based collision detection and resolution. The way this project handles collision is like this: if Scratch penetrates the moving platform from the left by 8 pixels, the scripts make Scratch move 2 pixels in all directions and check if it's still touching. Then it tries 4 pixels. Then it tries 8 pixels. When the scripts check that Scratch is still touching the moving platform when moved 8 pixels toward the left, it finds out that it isn't, and it let that be Scratch new position. This is how it finds the minimum translation vector. Because of the way it handles collision, it can handle two sprites sandwiching another sprite, a sprite being crushed by another sprite, moving platform, rotation, and slopes (not fully tested).