HELP! With my Speed power up

Im making a pong game with power-ups what i want to happen is that when the ball hits the power up the float speed increases by 5 for 10 seconds or until a point is scored but whats happening is that the speed increases by 5 after a point is scored not immdiately when its hit heres my code

using UnityEngine;
using System.Collections;

public class PowerUp : MonoBehaviour {
	static bool trip = false;

	void OnCollisionEnter2D(Collision2D other){

			trip=true;//stop collision from running twice
	IEnumerator speedtime(){
		yield return new WaitForSeconds (1);
		Destroy (gameObject);

	void revertSpeed(){
		ballControl.speed = 5;


I dont know if that’s what you need but since it’s some kind of power up then use triggers instead of collisions:

void OnTriggerEnter2D(Collider2D col) //so that the ball will not bounce off

Second thig is when it hits this trigger you should start counting:

float someTime;
bool PowerUp = false;
public void Update(){
        someTime += Time.deltaTime
        if(someTime >= 10.0f) PowerUP = false;

In the OnTriggerEnter2D method just simply change this values like so:

if(col.tag == "PowerUP"){
    someTime = 0;
    PowerUP = true;


ok i did i reworked my code but now i’ve run into another problem when it hits the powerUp it doesn’t immediately take effect it waits until after a point has been scored to work here my on trigger code

void OnTriggerEnter2D(Collider2D col){
		if (col.gameObject.tag == "Pickup") {