Чтобы переместить шар, вам нужно указать скорость для него. Предположим, что шар имеет скорость vx, vy. И время между последовательным вызовом movearray
составляет DT. Итак, новая позиция мяча:
dx = vx * dt;
dy = vy * dt;
xNew = xOld + dx;
yNew = nOld + dy;
Когда мяч попадает в верхнюю или нижнюю часть экрана, вам нужно отрицать vy. Когда мяч попадает в левый или правый конец, вам нужно отрицать vx. Например, vx является положительным и, таким образом, мяч движется вправо. Когда он попадает в правый конец, вам нужно сделать vx = -vx
, так что vx теперь отрицательный, и мяч начнет двигаться влево.
Таким образом, вы должны хранить скорость (может быть случайной, как и начальные позиции) для каждого шара, а внутри movearray
вычислять dt и новые позиции. И если какой-либо шар ударяется о стену, тогда соответственно уменьшите скорость. Чтобы проверить удар по стене, вам нужно сравнить их координаты x, y с шириной экрана, высотой и т. Д. Чтобы рассчитать dt, вы можете отслеживать время вызова movearray
.
.
dt = currentTime - lastTimeCalled;
lastTimeCalled = currentTime;
Обратите внимание, что этот метод будет сталкиваться только на границе экрана, он не будет обнаруживать столкновение шара с шариком.