InitializeRewardFunction()
 {
     base.InitializeRewardFunction();
     // create reward functions
     if (RewardScheme == RewardSchemes.IS)
     {
         if (IsRewardDistanceToTarget)
         {
             RewardFunctionDistanceToTarget = new RewardFunctionGeneratorDistanceToTarget(
                 Player,
                 Target
                 );
         }
         if (IsRewardFacingTarget)
         {
             RewardFunctionFacingTarget = new RewardFunctionGeneratorFacingTarget(
                 Player,
                 Target,
                 RewardFunctionGeneratorFacingTarget.Types.Dot
                 );
         }
         if (IsRewardTimePenalty)
         {
             RewardFunctionTimePenalty = new RewardFunctionGeneratorTimePenalty(
                 );
         }
     }
 }
        InitializeRewardFunction()
        {
            base.InitializeRewardFunction();

            // create reward functions
            if (RewardScheme == RewardSchemes.IS)
            {
                if (IsRewardDistanceToTarget)
                {
                    RewardFunctionDistanceToTarget = new RewardFunctionGeneratorDistanceToTarget(
                        BodyCore,
                        Target
                        );
                }
                if (IsRewardVelocityToTarget)
                {
                    RewardFunctionVelocityToTarget = new RewardFunctionGeneratorVelocityToTarget(
                        BodyCore,
                        Target
                        );
                }
                if (IsRewardFacingTarget)
                {
                    RewardFunctionFacingTarget = new RewardFunctionGeneratorFacingTarget(
                        BodyCore,
                        Target,
                        RewardFunctionGeneratorFacingTarget.Types.Dot
                        );
                }
                if (IsRewardCoreUp)
                {
                    RewardFunctionCoreUp = new RewardFunctionGeneratorKeepTowards(
                        BodyCore,
                        Vector3.up
                        );
                }
                if (IsRewardHeadUp)
                {
                    RewardFunctionHeadUp = new RewardFunctionGeneratorFacing(
                        Vector3.up,
                        RewardHeadUpType,
                        0f,
                        0f
                        );
                }
                if (IsRewardTimePenalty)
                {
                    RewardFunctionTimePenalty = new RewardFunctionGeneratorTimePenalty(
                        );
                }
            }
        } // InitializeRewardFunction