I'm using the location of the mouse on screen to output an constant force in the opposite direction..I'm fairly new to c# so wasn't sure if there is a better way to do it. As of now the y direction is always negative even when the mouse is below the player and the power on the x axis is not always the same... Code Below /------------------------------------------------------------------------------------------------------------------------------------------\ private void recoil() { mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition); direction = (mousePos - transform.position).normalized; if(direction.x > direction.y) { if(direction.x < 0) { direction.x = direction.x / -direction.x; direction.y = direction.y / -direction.x; } else { direction.x = direction.x / direction.x; direction.y = direction.y / direction.x; } } if (direction.y > direction.x) { if (direction.y < 0) { direction.y = direction.y / -direction.y; direction.x = direction.x / -direction.y; } else { direction.y = direction.y / direction.y; direction.x = direction.x / direction.y; } } rb.velocity = new Vector2(-direction.x * recoilPower, -direction.y * recoilPower); }