@Ezekiel4
Охотник на пиратов и сборщик монолитов

Как сделать скорость прыжка и падения одинаковыми?

Делаю 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);
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 1
@kokapuk
Ты можешь изменить силу гравитации Edit -> Project Settings -> Physics 2D и там первый пункт, gravity, покрути значение y.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы