The mechanic of the character jumping from the sides of the ledges is satisfying to use. It's fun that you have to time the player-character's upwards velocity as well as how close he is to the edge in order to climb up it. And when this mechanic is pulled off successfully, it makes the player feel good that they pulled off that special move. I would like it if this feature got incorporated much more in the game. Perhaps there could be a row of platforms with spikes on top that you have to use the walls on the sides to navigate around by edge-jumping?
I tried making a visual representation with a little blob edge-jumping to see if I could explain what I'm trying to say from above:
I also like how, in level 3, that it's required for the player to push the crate into a certain section of the level in order to complete it. It really makes sure that the player knows of this mechanic before they proceed any further in their game.
It is funny to end up watching the enemies helplessly fall off the edge, whether they're pushed off, or teleported right off a cliff. Perhaps you could add more ways to teleport the enemy into danger, such as a wall of spikes, crushed under a platform, or having them teleport on top of another enemy which causes both of them to explode.
It's also neat to watch as the tone of the music gets darker the further you go on in the game. I was waiting so see what would be at the very end, but unfortunately, I couldn't complete Level 9 even if my life depended on it due to the amount of bullets and enemy placements that required precide maneuvering to get around them.
Having an auto-saving feature is very convenient especially since there's around 19 levels throughout the game. Even after closing out and reopening the game my progress stays, so I won't have to worry about losing everything if I got a power outage.
The text in the instructions and ammo HUD is kind of hard to read with the white text being placed on a bright sky. Having some black borders around the text should fix this problem.
The rewind gun was really unresponsive during gameplay. It felt like I had to click multiple times in order to get the gun to start shooting, which ended up making it shoot twice sometimes. Was the shooting mechanic input placed in void FixedUpdate()? If this is the way it was programmed, it should be set in void Update() instead. The reason to use input detection in Update() is because FixedUpdate() can either run several times per frame or not run at all. I've had this problem occur in the past, and placing the input detection in Update() always seemed to fix this.
While the aiming of the gun works, it feels awkward to use by moving the mouse up or down. I would have preferred using the mouse to point towards the area where I want to shoot since that's the most natural feeling using the mouse pointer. Not only that, but since the user is so used to using the mouse for normal use on a computer, they should be able to pick up the controls of pointing and aiming easily since they've already been doing it so many times before.