このようなことをしてください:
if (renderX >= 0 && renderY >= 0
&& renderX <= container.getWidth() && renderY <= container.getWidth()) {
//Render
}
オブジェクトごとにサイズが異なるため、オブジェクトごとにカスタムにする必要があります。コンポーネントの各グループを個別にレンダリングします。TiLeDを使用している場合、ここに私が作成した素晴らしいコードがあります。
TiledMap map = mapComp.getMap();
//Render positions as integers
int renderX = (int) renderPos.getX();
int renderY = (int) renderPos.getY();
//Render offset for map
int xRenderOffset = renderX % 32;
int yRenderOffset = renderY % 32;
//Get the first tile to be rendered
int firstTileX = (int) -renderX / 32;
int firstTileY = (int) -renderY / 32;
//Render tiles only if their indices are greater than 0
if (firstTileX < 0) {
xRenderOffset += Math.abs(firstTileX) * 32;
firstTileX = 0;
}
if (firstTileY < 0) {
yRenderOffset += Math.abs(firstTileY) * 32;
firstTileY = 0;
}
//Get the last tile to be rendered
int lastTileX = firstTileX + (client.getContainer().getWidth() / 32) + 1;
int lastTileY = firstTileY + (client.getContainer().getHeight() / 32) + 2;
//Verify that the last tile is valid
if (lastTileX > 127) {
lastTileX = 127;
}
if (lastTileY > 127) {
lastTileY = 127;
}
//Check if the map will be visible on the screen
if (lastTileX >= 0 && lastTileY >= 0) {
map.render(xRenderOffset, yRenderOffset, firstTileX, firstTileY, lastTileX, lastTileY, 0, true);
map.render(xRenderOffset, yRenderOffset, firstTileX, firstTileY, lastTileX, lastTileY, 1, true);
map.render(xRenderOffset, yRenderOffset, firstTileX, firstTileY, lastTileX, lastTileY, 2, true);
map.render(xRenderOffset, yRenderOffset, firstTileX, firstTileY, lastTileX, lastTileY, 3, true);
}
32はタイルの幅、127はマップのサイズです-1。