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); }
void Start() { rigidbody = GetComponent <Rigidbody>(); movementAlgorithm = movementComponent.getMovementAlgorithm(); Debug.Log(movementAlgorithm); Debug.Log("Hello2"); }