, что название говорит, что в основномlibGDX - Попытка осуществить столкновения между 2 спрайтами
бит фона о текущей игре: Игрок всегда двигается слева направо, если экран касания он прыгает, если он потащил он подскакивает вперед. Я добавил плитку (объект платформы), и теперь я пытаюсь заставить моего игрока остановиться, если он ударит его.
Игрок находится в левом нижнем углу экрана, а платформа находится сверху справа. Случается, что Игрок останавливается, когда он достигает середины экрана, а не фактической Платформы. Может ли кто-нибудь взглянуть на мой код и посмотреть, смогут ли они понять, почему? Было бы высоко оценено.
public class Platform extends GameObject {
private Rectangle playerRect;
private Rectangle platformRect;
private Player player;
private boolean isOverlapping;
public Platform(Sprite spr) {
super(spr);
player = Player.getInstance(null); // Initialises the Player class (a Singleton)
// Set position of sprite
setxPos(getWidth() - 400);
setyPos(getHeight()/2 - 100);
spr.setX(getxPos());
spr.setY(getyPos());
}
public void update() {
// Rectangle of Player
playerRect = new Rectangle(player.getxPos(), player.getyPos(), player
.getSprite().getWidth() + player.getxPos(), player.getSprite()
.getHeight() + player.getyPos());
// Rectangle of Platform
platformRect = new Rectangle(getxPos(), getyPos(), getSprite().getWidth()
+ getxPos(), getSprite().getHeight() + getxPos());
// Make Player stop moving if the two rectangles collide
isOverlapping = playerRect.overlaps(platformRect);
if (isOverlapping) {
player.setxSpeed(0);
}
}
}
застрял на это некоторое время, спасибо заранее за любой вклад
Спасибо за ответ. Я пробовал свой код, но я не вижу никаких прямоугольников, и теперь спрайт не останавливается (обнаружение столкновения отсутствует). Я все еще не имел никакого успеха в рисовании прямоугольника в Android lol – DeuceDeuce
nevermind, я положил его в draw(), и он работает. Большое спасибо! edit: прямоугольники находятся в правильном месте, но столкновение не обнаружено lol – DeuceDeuce
ok Мне пришлось инициализировать прямоугольники в методе update(), все работает сейчас. Еще раз спасибо – DeuceDeuce