@Void59

Почему объект двигается медленнее чем другие при одинаковой вертикальной скорости?

Доброго времени суток!
У меня есть несколько разных объектов, у которых задана одинаковая скорость по вертикали, одному из них также придается горизонтальное ускорение AddForce, и как раз этот объект двигается медленнее остальных. Почему и как это исправить? Скрипт ниже.

using UnityEngine;

public class SliderScript : MonoBehaviour
{
    public float gravitation;
    float speedY;
    [SerializeField] Rigidbody2D rb;
    [SerializeField] Rigidbody2D Parent;


    private void Start()
    {
        speedY = GameObject.Find("storage").GetComponent<storage>().PatternSpeed;
    }

    private void FixedUpdate()
    {
        rb.velocity = new Vector2(rb.velocity.x, -speedY);
        rb.AddForce(new Vector2(-gravitation, 0));
    }

    public void Reverse()
    {
        gravitation = -gravitation;
        rb.AddForce(new Vector2(-gravitation * 5, 0));
    }

    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject.CompareTag("HelperCentralTrigger"))
        {
            gravitation = -gravitation;
            rb.AddForce(new Vector2(-gravitation * 5, 0));
        }
    }
}
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 1
Griboks
@Griboks Куратор тега C#
Потому что "физика программистам не нужна". В действительности, необходимо проверить документацию на AddForce:
Add a continuous force to the rigidbody, using its mass.

Следовательно, этот метод толкает тело. Очевидно, что если дополнительно к постоянной скорости ещё и толкать объект, то его скорость будет меняться. Кроме того, здесь ещё учитывается масса объекта.
Ответ написан
Ваш ответ на вопрос

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

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