- Home /
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. ```cs
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);
}
}
```
Answer by liveproc · Oct 02, 2019 at 01:58 AM
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.
Your answer
Follow this Question
Related Questions
Convert Input.mousePosition to RectTransform pivot position 2 Answers
Drawing a (debug) line between anchored UI element and mouse? 0 Answers
What is causing my attack animation to be in a different position from my idle/run animation? 0 Answers
Cannot change camera position (2D) 1 Answer
How to change a moving box's direction once it hits a point? 0 Answers