我正在写游戏,而我目前正在处理碰撞问题。我有以下代码:
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是一个障碍
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;
}
最终将玩家扔到了屏幕的右侧。我不知道为什么。