Exemple #1
0
    public override Vector3 getVelocity()
    {
        float totalWeight = getWeightedMovements().Select(x => x.getWeight()).Aggregate((x, y) => x + y);

        if (totalWeight == 0)
        {
            return(Vector3.zero);
        }

        Vector3 totalVelocity = Vector3.zero;

        foreach (_WeightedMovement weightedMovement in getWeightedMovements())
        {
            _MovementAlgorithm movement = weightedMovement.getMovement();

            if (movement is _KinematicMovement)
            {
                totalVelocity += movement.getVelocity() * weightedMovement.getWeight();
            }
            else if (movement is _DynamicMovement)
            {
                ((_DynamicMovement)movement).update();
                totalVelocity += movement.getVelocity() * weightedMovement.getWeight();
            }
        }

        totalVelocity /= totalWeight;
        return(totalVelocity);
    }
Exemple #2
0
 void Start()
 {
     rigidbody         = GetComponent <Rigidbody>();
     movementAlgorithm = movementComponent.getMovementAlgorithm();
     Debug.Log(movementAlgorithm);
     Debug.Log("Hello2");
 }