У меня есть движущаяся платформа с постоянной скоростью, и мне нужно обновить позицию моего игрока, когда мой олайнер прыгнет на эту платформу. Но у меня проблемы с обнаружением столкновений. Здесь, как я пытаюсь обнаружить столкновение между нижним прямоугольником моего игрока и Rectangle платформы.Обнаружение столкновения движущейся платформы
for(GameObject t2 : list){
if(t2 instanceof Platform){
platform = (Platform) t2;
render.rect(platform.getHitBox().getX(),
platform.getHitBox().getY(),
platform.getHitBox().getWidth(),
platform.getHitBox().getHeight());
platform.update(Gdx.graphics.getDeltaTime(), 0,
player1.getHitBox().getX(),
Gdx.graphics.getWidth());
if(platform.getHitBox().overlaps(player1.getHitBox())
||player1.getHitBox().overlaps(platform.getHitBox())){
System.out.println("true");
platformPositonX = player1.getHitBox().getX()
+ platform.getUpdateSpeed();
player1.action2(1, platformPositonX,
(platform.getHitBox().y +
platform.getHitBox().height));
}else{
System.out.println("false");
}
}
}
Вот мой экран печати и мой результат печати в concole Как вы можете видеть мое столкновение не работать правильно. Когда мой персонаж не на платформе мой результат правильно я получаю false
, но когда мой персонаж на платформе я получил true
, false
, false
, true
, ......
Почему вы дважды проверяете столкновение? player1.getHitBox(). перекрывает (platform.getHitBox() и platform.getHitBox(). overlaps (player1.getHitBox() одинаковы и возвращают тот же результат. Overlaps означает, что они сталкиваются с «друг с другом». –
Теперь к вашей проблеме, вы уверены, что обновляете платформу hitbox по мере продвижения платформы? Можете ли вы опубликовать код своего класса Platform? –