因此,我正在创建一个简单的2D视频游戏。我最近注意到播放器可以移出屏幕,因此添加了以下代码:

if (newX <= SIZE * TagsCanvas.SCALE) {
            newX = SIZE * TagsCanvas.SCALE;
        } else if (newX >= TagsCanvas.CANVAS_WIDTH - (SIZE * TagsCanvas.SCALE) - getAABB().getRadX()) {
            newX = TagsCanvas.CANVAS_WIDTH - (SIZE * TagsCanvas.SCALE) - getAABB().getRadX();
        }

        if (newY <= SIZE * TagsCanvas.SCALE) {
            newY = SIZE * TagsCanvas.SCALE;
        } else if (newY >= TagsCanvas.CANVAS_HEIGHT - (SIZE * TagsCanvas.SCALE) - getAABB().getRadY()) {
            newY = TagsCanvas.CANVAS_HEIGHT - (SIZE * TagsCanvas.SCALE) - getAABB().getRadY();
        }


TagsCanvas.CANVAS_WIDTH是画布对象的宽度。高度是画布对象的高度。大小是玩家的大小,而规模是游戏的规模(目前为2)。 getAABB().getRadX()返回从播放器中心到边缘的半径(“播放器”是一个方框)。

现在,x可以正常工作,而Y部分则不能。它会阻止玩家向上移动地图(第一条陈述),但会让玩家向下移动约20点。任何帮助,将不胜感激!

最佳答案

您可以通过使用Modulo运算符(即整数除法后的余数)将其环绕起来。

假设您要移动5个单位:
有一个方法:

public void move(int amt){
 pos = (pos + amt) % TagsCanvas.CANVAS_WIDTH.
}


模运算符可确保该值永远不会等于或大于TagCanvas.CANVAS_WIDTH。

关于java - 播放器可以移出屏幕吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16629116/

10-13 05:02