В настоящее время я работаю над предварительно построенным движком java, но я переписал систему столкновений, чтобы использовать как положение игрока относительно плиток, так и прямоугольников для столкновения. Мне нужно убедиться, что игрок не сталкивается ни с чем, чтобы позволить игроку двигаться снова, но в моем методе я могу проверить только, сталкивается ли игрок.Как проверить, не сталкивается ли игрок с объектом? (JAVA)
protected void tileCollision()
{
int calledNumTimes = 0;
AnimatedSprite player = findPlayer();
Tile lastCollided;
for(int i = 0; i < _sprites.size(); i++)
{
calledNumTimes++;
AnimatedSprite spr = _sprites.get(i);
for(int j = 0; j < tileWithinRange.length; j++)
{
Tile tile = tileWithinRange[j];
if(tile != null && spr.collidesWith(tile.getBounds()))
{
lastCollided = tile;
player.setCollided(true);
calledNumTimes++;
if(!spr.hasMultBounds() && !tile.hasMultBounds())
{ //tile and spr have only one bound
//spr.setBounds(16, spr.getBounds().x + 5, spr.getBounds().y);
if(tile.getTileBounds().intersects(player.getBounds()))
{
tileCollision(spr, tile, -1, -1);
System.out.println("colliding");
} else {
System.out.println("nope");
}
// spr.setBounds(16, spr.getBounds().x - 5, spr.getBounds().y);
}
} else if(tile != null && !spr.collidesWith(tile.getBounds()))
player.setCollided(false);
}
} //end _tiles for loop
} //end _sprites for loop
Как прямо сейчас,
System.out.println("nope");
никогда не печатается, так что я могу проверить только если игрок сталкиваясь, не будучи в состоянии проверить, если он не является.
Тогда найдется что-то не так с вашим кодом. Когда theres нет пересечения, если (tile.getTileBounds(). Пересекает (player.getBounds())) «else» вызывается с System.out.println («nope»); – XxGoliathusxX