Вы устанавливаете скорость y при прыжке, но никогда не устанавливаете ее ни на что другое. Я предлагаю использовать для прыжка жесткоеBody.AddForce :
rigidBody.AddForce(transform.up * jumpSpeed, ForceMode2D.Impulse);
Я также должен сказать, что ваш первый if..else if ... else кажется избыточным .
Если движение> 0, вы выполняете X, если движение <0, вы делаете то же самое, и если движение == 0, вы все равно делаете то же самое, даже если вы пишете это по-другому. (Если движение == 0, то движение * скорость также равно 0). Таким образом, вы можете просто указать, что </p>
rigidBody.velocity = new Vector2(movement * speed, rigidBody.velocity.y);
, не используя if вообще.
edit: Я случайно написал неправильную строку для того, что использовать, исправьте это сейчас.
edit2 : Итак, после обоих этих изменений ваша функция обновления будет выглядеть так:
void Update()
{
movement = Input.GetAxis("Horizontal");
rigidBody.velocity = new Vector2(movement * speed, rigidBody.velocity.y);
if (Input.GetButtonDown("Jump"))
{
rigidBody.AddForce(transform.up * jumpSpeed, ForceMode2D.Impulse);
}
}