Передвижение не влияя на физику (без 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?