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;
        }
    }
Esempio n. 2
0
    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);
    }