В основном у меня есть 2 массива и обработчики. Один для порождения предметов, а другой обрабатывает препятствия. Что происходит, хотя, через некоторое время значения меняются и не в центре. Я предоставлю скриншот.
https://i.stack.imgur.com/nR7ae.png Но код для создания предметов и препятствий не меняется, что может повлиять на это?
Я столько раз просматривал свой код и не могу найти причину этого.
Я заполняю монеты в центре препятствий, и когда одна из них поднята или уходит с экрана, запускается этот бит кода.
Вот как я заполняю свои монеты и препятствия.
private void populateCoins() {
currY = (-5 * Constants.SCREEN_HEIGHT / 4) - (obstacleGap / 2) + (obstacleHeight);
while (currY < 0) {
xStartCoin = (int) (Math.random() * (Constants.SCREEN_WIDTH - obstacleHeight));
coins.add(new Coin(obstacleHeight, colour, xStartCoin, currY));
currY += obstacleHeight + obstacleGap;
}
}
private void populateObstacles() {
int currY = (-5 * Constants.SCREEN_HEIGHT / 4);
while (currY < 0) {
int xStart = (int) (Math.random() * (Constants.SCREEN_WIDTH - playerGap));
obstacles.add(new Obstacle(obstacleHeight, colour, xStart, currY, playerGap));
currY += obstacleHeight + obstacleGap;
}
}
Вот как я создаю свои препятствия и монеты.
obstacles.add(0, new Obstacle(obstacleHeight, colour, xStart,
obstacles.get(0).getRectangle().top - Constants.OBSTACLE_HEIGHT - Constants.OBSTACLE_GAP,
(int)Constants.PLAYER_GAP));
coins.add(0, new Coin(obstacleHeight, colour, xStartCoin,
coins.get(0).getRectangle().top - Constants.OBSTACLE_GAP + Constants.OBSTACLE_HEIGHT));
Именно после игры в течение примерно 60-х годов монеты начинают ползти вверх по экрану, уже не в центре.
Все, что мне нужно, чтобы монеты оставались в центре между препятствиями.