Math.isAntiparallel C# (CSharp) Method

isAntiparallel() public static method

public static isAntiparallel ( Vector3 vector1, Vector3 vector2 ) : bool
vector1 Vector3
vector2 Vector3
return bool
    public static bool isAntiparallel(Vector3 vector1, Vector3 vector2)
    {
        return (Mathf.Sign(vector1.x) != Mathf.Sign(vector2.x) &&
                Mathf.Sign(vector1.y) != Mathf.Sign(vector2.y) &&
                Mathf.Sign(vector1.z) != Mathf.Sign(vector2.z));
    }

Usage Example

Example #1
0
    public static Vector3 calculateVelocity(Vector3 position, Vector3 velocity)
    {
        Vector3 targetVelocity = velocity;

        Vector3 grappleVector = anchor - position;
        float   sqrDistance   = grappleVector.sqrMagnitude;

        // The player's velocity along the direction of the grapple line
        Vector3 projectedVelocity = Math.project(velocity, grappleVector);

        // Make sure the player is not moving away from the anchor
        if (Math.isAntiparallel(projectedVelocity, grappleVector) && sqrDistance >= sqrLength)
        {
            targetVelocity -= projectedVelocity;
        }

        if (reelMultiplier > 0)
        {
            Vector3 errantVelocity = velocity - projectedVelocity;
            targetVelocity -= errantVelocity;

            Vector3 reelVelocity = grappleVector.normalized * reelSpeed * reelMultiplier;

            if (Math.vector3LessThan(projectedVelocity, new Vector3(Mathf.Abs(reelVelocity.x), Mathf.Abs(reelVelocity.y), Mathf.Abs(reelVelocity.z))) ||
                Math.isAntiparallel(projectedVelocity, reelVelocity))
            {
                targetVelocity   -= lastAddedVelocity;
                targetVelocity    = reelVelocity;
                lastAddedVelocity = reelVelocity;
            }

            // Apply stabilizers
            if (reelMultiplier > 1)
            {
                errantVelocity /= stabilizer;
            }
            targetVelocity += errantVelocity;
            sqrLength       = sqrDistance;
        }

        return(targetVelocity);
    }