Передвижение не влияя на физику (без transform.Translate) Unity

У меня есть класс:

public abstract class Bounce : MonoBehaviour
{
    protected abstract AnimationCurve YAnimation { get; set; }
    protected abstract Rigidbody2D RigidBody { get; }
    private Vector2 _positionJump;

    public void Jump(float duration, float height)
    {
        _positionJump = Vector2.zero;
        StartCoroutine(JumpMovement(RigidBody, duration, height));
    }

    private IEnumerator JumpMovement(Rigidbody2D rigidbodyJumper, float duration, float height)
    {
        StartCoroutine(AnimationByTime(duration, height));

        var expiredSeconds = 0f;
        var progress = 0f;

        Vector2 animationJump;
        Vector2 startPosition = rigidbodyJumper.position;

        while (progress < 1)
        {
            expiredSeconds += Time.deltaTime;
            progress = expiredSeconds / duration;
            animationJump = startPosition + _positionJump;
            rigidbodyJumper.position = new Vector2(rigidbodyJumper.position.x, animationJump.y);

            yield return null;
        }
    }
    
    private IEnumerator AnimationByTime(float duration, float height)
    {
        var expiredSeconds = 0f;
        var progress = 0f;

        while (progress < 1)
        {
            expiredSeconds += Time.deltaTime;
            progress = expiredSeconds / duration;

            _positionJump = new Vector2(0, YAnimation.Evaluate(progress) * height);

            yield return null;
        }
    }

    private void OnCollisionEnter2D(Collision2D collision)
    {
        StopAllCoroutines();
    }
}

В конце AnimationCurve, игрок слегка дергается(чем выше Gravity Scale тем сильнее дергается). Используя transform.Translate значения не подходят(к примеру увеличиваю длину прыжка, а он еще добавляет высоты). Есть замена transform.Translate, но в Rigidbody2D?


Ответы (0 шт):