Y轴运动干扰X轴运动

时间:2015-05-08 00:08:15

标签: java collision

我正在写游戏,而我目前正在处理碰撞问题。我有以下代码:

    if(y + dy + h > o.getY() && y + dy + h < o.getY() + o.getH()
            && x + dx + w > o.getX() && x + dx < o.getX() + o.getW()){
        dy = o.getY() - y - h;
    }else if(y + dy > o.getY() && y + dy < o.getY() + o.getH()
            && x + dx + w > o.getX() && x + dx < o.getX() + o.getW()){
        dy = y - o.getY() - o.getH();
    }
    if(x + dx + w > o.getX() && x + dx + w < o.getX() + o.getW()
            && y + dy + h > o.getY() && y + dy < o.getY() + o.getH()){
        dx = o.getX() - x - w;
    }else if(x + dx > o.getX() && x + dx < o.getX() + o.getW()
            && y + dy + h > o.getY() && y + dy < o.getY() + o.getH()){
        dx = o.getX() + o.getW() - x;
    }

o是一个障碍

  • o.getY()返回障碍物的y坐标
  • o.getX()返回障碍物的x坐标
  • o.getW()返回障碍物的宽度
  • o.getH()返回障碍物的高度

x是玩家的x坐标 y是玩家的y坐标 w是玩家的宽度 h是玩家的高度 dx是下一帧的x变化 dy是下一帧y的变化

y轴的代码不能正常工作,我评论它尝试新的东西,但我发现的是当我将代码更改为:

    /*if(y + dy + h > o.getY() && y + dy + h < o.getY() + o.getH()
            && x + dx + w > o.getX() && x + dx < o.getX() + o.getW()){
        dy = o.getY() - y - h;
    }else if(y + dy > o.getY() && y + dy < o.getY() + o.getH()
            && x + dx + w > o.getX() && x + dx < o.getX() + o.getW()){
        dy = y - o.getY() - o.getH();
    }*/
    if(x + dx + w > o.getX() && x + dx + w < o.getX() + o.getW()
            && y + dy + h > o.getY() && y + dy < o.getY() + o.getH()){
        dx = o.getX() - x - w;
    }else if(x + dx > o.getX() && x + dx < o.getX() + o.getW()
            && y + dy + h > o.getY() && y + dy < o.getY() + o.getH()){
        dx = o.getX() + o.getW() - x;
    }

最终将玩家扔到了屏幕的右侧。我不知道为什么。

0 个答案:

没有答案