Player movement and basic abilities - kawabart/Wodnik GitHub Wiki
Movement
Player's basic movement is quiet and quick crawl on the ground.
Controls
We can use WSAD/left stick to control player in any direction. Additionaly, we can use mouse/right stick to control direction the player is facing - similar to GTA I and II, or Hotline Miami.
Player is able to move in any direction (altought on a keyboard its limited to 8 directions by hardware inputs) on a 2D plane. Theres no jumping, climbing, or any other mechanic that would change player's Y value - altough visually he might look like he's lower when for example he's swimming under water. Collisions with environment should block player from walking trough level boundries and other elements of blockout - but there shouldnt be any friction, player should move smoothly along the lines of collision.
This is a nightmarish superhuman crawl - player can move pretty fast this way, similar to a lizard or a spider.
Different terrain types can affect player movement speed.
Visuals
Player animations will use procedural animation/IK for a creepy spider-like crawl - for now the images can be used. Animation speed should be connected to player speed.
Player abilities
Push
Player can use LMB to push. Doesnt do damage itself, but can push entities away - for example an enemy towards the barrel, or barrel towards the enemy. Basically works like kicking in games like Dark Messiah, Duke Nukem 3D, Noita - adds velocity impulse to an object in front of the player.
Pushing enemies makes them downed if they're vulnerable.
Can be really powerfull while coupled with environmental interactions - like pushing an enemy to water, on spikes, other enemy, unstable, marshy ground etc.
Push is applied in the direction player coursor or pad aims. While pushing, player rotation changes to face that direction.
Push can apply small force to an object.
Aim (and throw)
We can aim with right mouse button/left trigger (Hold). Aiming snaps to interactive elements like bodies on the ground, enemies, weapons on the ground etc. Whe hold the body/weapon as long as Aim button is held. We can drop item/body by letting go of aim, or for example throw object (LMB).
Grab
From the distance, we can quickly catch someones leg and throw them to the ground.
If we won't let go of the button, it smoothly transitions into "Drag" ability.
We can also aim at and drag small elements of the environment, like weapons dropped by enemies.
Drag
We can drag ragdoll-like downed enemy - to hide them in bushes or drag to water. Similarly we can drag other medium to small dynamic objects, like crates, stones, tools and weapons.
Finisher
We can finish off downed enemy. This lasts about a second, during which we're vulnerable to attacks.