Okay after messing around with the code I've managed to get it working properly, the end result being that I ended appending code to the player charactermotor instead so that when the player collider with the trampoline then it implemented a downward force which would reverse the bounce of the player to a specific height stated within the unity inspector. The code below shows the end result.
public float speed;
public float jumpSpeed;
public float gravity;
public Vector3 moveDirection = Vector3.zero;
public float downwardForce;
public float terminalVelocity;
public float airSpeed;
void Update()
{
CharacterController controller = GetComponent<CharacterController>();
// is the controller on the ground?
if (controller.isGrounded)
{
//Feed moveDirection with input.
moveDirection = new Vector3 (Input.GetAxis ("Horizontal"), 0, Input.GetAxis ("Vertical"));
moveDirection = transform.TransformDirection (moveDirection);
downwardForce = 0;
//Multiply it by speed.
moveDirection *= speed;
//Jumping
if (Input.GetButton ("Jump"))
{
downwardForce -= jumpSpeed;
}
}
else
{
if (downwardForce < terminalVelocity)
{
moveDirection *= airSpeed;
downwardForce += gravity * Time.deltaTime;
}
}
//Applying gravity to the controller
moveDirection.y -= downwardForce * Time.deltaTime;
//Making the character move
controller.Move(moveDirection * Time.deltaTime);
}
void OnTriggerEnter(Collider collider)
{
if (collider.tag == "smallTrampoline")
{
downwardForce *= -1 * collider.gameObject.transform.GetComponent<SmallTrampolineBounce> ().jumpSpeed;
}
if (collider.tag == "largeTrampoline")
{
downwardForce *= -2 * collider.gameObject.transform.GetComponent<SmallTrampolineBounce> ().jumpSpeed;
}
I also implemented airSpeed as a way of enforcing some speedy movement for the player when they're in the air as beforehand the player wasn't able to move at all and simply stayed stuck jumping up & down