我正在使用 Java 为游戏制作基于图 block 的渲染方法。
第一行(和第一列)的图 block 有可能被部分绘制在屏幕上,我想知道这些图 block 在屏幕上有多少像素。
我想到了这个(用于检查 splinter 瓷砖的最大 X 坐标):
int brokenX = xOffset; //xOffset can be any number
while (brokenX < 0){
brokenX += tileSet.getTileSize(); //corrects if the number is negative
}
while (brokenX >= tileSet.getTileSize()){
brokenX -= tileSet.getTileSize(); //corrects if the number is too big
}
这很好用。但这似乎是一种资源浪费(考虑到它会为每一帧完成两次)。
是否有一些有效的方式(位掩码等)来做到这一点?
最佳答案
我觉得你在找
brokenX = xOffset % getTileSize();
我认为上面的方法也适用于负值,但如果 xOffset 可以更大,那么你可以这样做
好的..很好。我认为只要在最后一行添加一个支票就可以解决这个问题。
hiddenTiles = xOffset / getTileSize();
xOffset -= hiddenTiles * getTileSize();
if(xOffset < 0) {
brokenX= -(-xOffset % getTileSize());
}
else {
brokenX = xOffset % getTileSize();
}
或者正如 Jason 所建议的: 就一行...
brokenX= (xOffset + getTileSize())% getTileSize());
我真的认为,这也适用于负偏移。因此无需更改。
关于java - 检查像素坐标偏移的高效代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24348878/