I'm working on some special pick ups on an arkanoid-like game. Currently, I have one that should spawn several balls all in a row, right after the original ball hits the paddle. All the additional balls should spawn just above the paddle and then they are passed the vector from the original ball, in which case they should follow that vector, essentially causing a line of balls all traveling in the same direction. The problem I am having is the ball's spawn just above the paddle, but they are spawning in place. Gravity pulls them down, and when they hit the paddle, that seems to be when the vector becomes active and the ball takes off like it should have when it spawned. I'm not sure what I am doing wrong here to keep it from just taking off like that as soon as it spawns. Can anyone see anything here that could be causing this behavior?
This is the code for spawning a ball and setting the vector.
Instantiate(newBall, new Vector3(paddle.transform.position.x, (paddle.transform.position.y + 1), 0), Quaternion.identity); newBall.GetComponent<Ball>().hasStarted = true; GameManager.pickUpManager.allBalls.Add(newBall.GetComponent<Ball>()); newBall.GetComponent<Rigidbody2D>().AddForce(mainBallVector, ForceMode2D.Impulse); //use the original ball's vector3 to follow it directly
Here is where mainBallVector gets set, it is a vector3:
mainBallVector = mainBall.GetComponent<Rigidbody2D>().velocity;