玩家可以离开屏幕吗?

时间:2013-05-18 21:25:52

标签: java

所以,我正在创建一个简单的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点。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

你可以做的是使用Modulo运算符(即整数除法后的余数)使其循环。

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

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

Modulo运算符确保该值永远不会等于或大于TagsCanvas.CANVAS_WIDTH。