Делаю 2д платформер. На персонаже висит rigidbody2d. Нужно сделать движение.
Прыжок реализован с помощью
rb.AddForce(Vector2.up * jump_power); , где rb - это rigidbody, а jump_power это public float.
Персонаж прыгает, но прыгает низко. Выставляя значение jump_power я смог добиться того, что персонаж прыгает на нужную высоту, однако делает он это резко, а падает очень медленно. Поигравшись со значениями гравитации и массы, я добился нормальной скорости падения, однако на скорость прыжка это не влияет. Подскажите, как мне изменить код, чтобы решить эту проблему?
Скриптusing System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMove : MonoBehaviour {
private Rigidbody2D rb;
public float move_speed = 10.0f;
public float jump_power = 4000f;
void Start() {
rb = GetComponent<Rigidbody2D>();
}
void Update() {
float moveX = Input.GetAxis("Horizontal");
rb.MovePosition(rb.position + Vector2.right * moveX * move_speed * Time.deltaTime);
if (Input.GetKeyDown(KeyCode.Space))
rb.AddForce(Vector2.up * jump_power);
}
}
UPD: Решение с другого форума, которое мне помогло: вместо MovePosition использовать velocity:
rb.velocity = new Vector2(moveX * move_speed, rb.velocity.y);