InitializeRewardFunction()
 {
     base.InitializeRewardFunction();
     // create reward functions
     if (IsRewardDistanceToTarget)
     {
         RewardFunctionDistanceToTarget = new RewardFunctionDistance(
             Player,
             Target,
             -1f
             );
     }
     if (IsRewardFacingTarget)
     {
         RewardFunctionFacingTarget = new RewardFunctionGeneratorFacingTarget(
             Player,
             Target,
             RewardFunctionGeneratorFacingTarget.Types.Dot
             );
     }
     if (IsRewardTimePenalty)
     {
         RewardFunctionTimePenalty = new RewardFunctionGeneratorTimePenalty(
             );
     }
 }
        InitializeRewardFunction()
        {
            base.InitializeRewardFunction();

            // create reward functions
            if (IsRewardDistanceToTarget)
            {
                RewardFunctionDistanceToTarget = new RewardFunctionDistance(
                    BodyCore,
                    Target,
                    -1f
                    );
            }
            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