private void FixedUpdate() { positions.EnqueueDequeue(master.position); int slavenum = 0; foreach (Transform slave in slaves) { Vector2 P = positions.Peek(DelayIndex(slavenum)); Vector2 slave_P = Vector2.Lerp(slave.position, P, lerpSpeed); slave.position = slave_P; slavenum += 1; } if (InputValidator.Instance) { if (InputValidator.Instance.ValidatePosition(master.position)) { master.gravityScale = 0; } else { master.gravityScale = gravityScale; } } if (master.velocity.magnitude < minSpeed && master.velocity.magnitude > 0.01f) { master.velocity *= minSpeed / master.velocity.magnitude; } }
private void FixedUpdate() { Vector2 t_S = target.position - body.position; Vector2 t_V = target.velocity; Vector2 direction = springStrength * t_S * t_S.magnitude + mimicVelocity * t_V; direction = directions.EnqueueDequeue(direction); body.velocity = Vector2.Lerp(body.velocity, direction, LerpSpeed * Time.fixedDeltaTime); }