У меня есть игра, в которой пользователь должен собирать падающие на него капли. Блобы — это растровые изображения. Проблема, с которой я сталкиваюсь, заключается в том, что некоторые капли поступают из-за пределов экрана. Так, например, нижняя часть блоба будет отображаться в самом верху экрана, поэтому я не смогу увидеть полное растровое изображение. Я хочу, чтобы они просто появлялись между верхней и нижней частью экрана, а не за его пределами. Мой вопрос: может ли кто-нибудь помочь мне сделать так, чтобы капли появлялись только на экране? Любая помощь будет принята с благодарностью!
Просто отметить:
blobOffsetY
= координата нижнего края капли.
Мой код:
for (int j = 0; j < AppConstants.numberOfBlobs; j++) {
if (blobs.get(j).getBlobX() < -AppConstants.getBitmapBank().getBlobWidth()) {
blobs.get(j).setBlobX(blobs.get(j).getBlobX() +
AppConstants.numberOfBlobs * AppConstants.distanceBetweenBlob);
int blobOffSetY = AppConstants.minBlobOffsetY +
random.nextInt(AppConstants.maxBlobOffsetY - AppConstants.minBlobOffsetY + 1);
blobs.get(j).setBlobOffsetY(blobOffSetY);
blobs.get(j).newScore = true;
}
blobs.get(j).setBlobX(blobs.get(j).getBlobX() - AppConstants.blobVelocity);
}
Вы не показываете соответствующий код, но я думаю, ваша проблема начинается здесь:
blobs.get(j)
Кажется, что ваша единственная структура данных, которая «знает» большие двоичные объекты, представляет собой своего рода список. Как следствие, вам всегда нужно повторять все из них, чтобы затем решить, какие из них в настоящее время находятся на вашем видимом экране.
Ответ: придумайте более подходящий способ хранения этих данных. Например, вы можете:
Но поскольку ваш вопрос довольно широкий и общий, не просите более конкретного ответа.
На всякий случай, если вы хотите попрактиковаться в голосовании... получайте от этого удовольствие.