Resetting a gameobjects position?

Hi,
I’m making a pong clone and i’m trying to reset the position of the rackets whenever a player scores.
I’ve used about everything i can think of but no luck so far. I thought for sure transform.translate would work, even tried it in the update function and no luck still, even tried referencing it, and as you can guess, no luck. Any help would be appreciated. I don’t necessarily know what i’m doing either so don’t quote me on anything said above.


public class Ball : MonoBehaviour
{
    public float speed = 25;
    public GameObject rightRacket;
    public GameObject leftRacket;

    private int Player1 = 0;
    private int Player2 = 0;

    Vector3 originalLeft = new Vector3(-21f, 0, 0);
    Vector3 originalRight = new Vector3(21f, 0, 0);

    // Start is called before the first frame update
    void Start()
    {
        GetComponent<Rigidbody2D>().velocity = Vector2.right * speed;
    }

    float hitFactor(Vector2 ballPos, Vector2 racketPos,
                    float racketHeight)
    {
        return (ballPos.y - racketPos.y) / racketHeight;
    }

    void OnCollisionEnter2D(Collision2D col)
    {
        if (col.gameObject.name == "RacketLeft")
        {
            float y = hitFactor(transform.position,
                                col.transform.position,
                                col.collider.bounds.size.y);

            Vector2 dir = new Vector2(1, y).normalized;

            GetComponent<Rigidbody2D>().velocity = dir * speed;

            speed += 0.4f;
        }

        if (col.gameObject.name == "RacketRight")
        {
            float y = hitFactor(transform.position,
                                col.transform.position,
                                col.collider.bounds.size.y);

            Vector2 dir = new Vector2(-1, y).normalized;

            GetComponent<Rigidbody2D>().velocity = dir * speed;

            speed += 0.4f;
        }

        if (col.gameObject.name == "WallRight")
        {
            // Get rid of ball.
            Destroy(gameObject);
            Player1 += 1;
            speed = 30;
            StartGame.ballCount = 0;
            // Reset racket position.
            leftRacket.transform.Translate(-21, 0, 0);
            rightRacket.transform.Translate(21, 0, 0);
        }

        if (col.gameObject.name == "WallLeft")
        {
            Destroy(gameObject);
            Player2 += 1;
            speed = 30;
            StartGame.ballCount = 0;
            leftRacket.transform.Translate(-21, 0, 0);
            rightRacket.transform.Translate(21, 0, 0);
        }
    }

Figured it out. Changed to the script controlling paddle movement and broke it into two individual scripts for each paddle.

public Vector3 startPosition;

void Awake()
{
    startPosition = transform.position;
}

void FixedUpdate()
{
    if (some conditoin)
    {
        transform.position = startPosition;
    }
}

Set the vector in the inspector window and you’re gravy. Probably not the most efficient the way I implemented it for me but it works.