void MovePlayer() { Vector2 relPos = WorldToRelative(transform.position); Vector2 relMoveInput = WorldToRelative(input.GetMoveInput()); bool onGround = relPos.y == -frameDist; float maxHspeed = walkSpeed * Time.deltaTime; hspeed = Mathf.Min(maxHspeed, relMoveInput.x * maxHspeed + hspeed * (onGround ? horizInertiaGround : horizInertiaAir)); if (onGround && Input.GetButtonDown(input.jump)) { vspeed += jumpSpeed * Time.deltaTime; } vspeed -= gravity * Time.deltaTime; hspeed = Mathf.Clamp(hspeed, -frameDist + halfWidth - relPos.x, frameDist - halfWidth - relPos.x); vspeed = Mathf.Clamp(vspeed, -frameDist - relPos.y, frameDist - height - relPos.y); transform.position += RelativeToWorld(new Vector3(hspeed, vspeed, 0)); relPos = WorldToRelative(transform.position); }