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);
}
}