Пример #1
0
    private void FixedUpdate()
    {
        Collider[] colliders             = new Collider[numPlayers];
        LayerMask  magnetogloveLayerMask = LayerMask.GetMask("MagnetoGlove");
        int        overlapCount          = Physics.OverlapSphereNonAlloc(transform.position, influnceRange, colliders, magnetogloveLayerMask);

        for (int i = 0; i < overlapCount; i++)
        {
            Collider     collider     = colliders[i];
            MagnetoGlove magnetoGlove = collider.GetComponent <MagnetoGlove>();
            if (collider.transform != transform.parent && magnetoGlove.IsMagnetizing)
            {
                Vector3 r = magnetoGlove.ballTarget.position - transform.position;
                //Vector3 homingForce = InverseSquareForceLaw(magnetoGlove.Strength, r);
                //Vector3 homingForce = InverseForceLaw(magnetoGlove.Strength, r);
                Vector3 homingForce = PControllerWithPredictionForce(magnetoGlove.ballTarget.position, magnetoGlove.ballTargetVelocity);
                ballRb.AddForce(homingForce);
                magnetoGlove.ApplyForceOnHand(-homingForce, ForceMode.Force);
            }
        }
    }