所以我有这个立方体,我想从墙壁上弹开,(但现在只是x轴)
当到达帧的末尾时,它来回移动而不是相反的方向。
public void moveBox(int dx,int dy)
{
if(xLeft < 0 || xLeft > frame_width)
{
dx = -dx;
}
xLeft = xLeft + dx;
repaint();
}
这就是我从代码中了解的内容,如果xLeft(又称多维数据集的原点坐标)通过帧,然后dx(即其移动速度)变为负数,则应该反转方向。当它回到零时,双重负数会将其翻转回正数。我的逻辑有缺陷,因为它没有反弹,只是在帧的末尾来回浮动
但是事实并非如此,我不明白为什么会这样,因为每次使用不同的xLeft值调用该方法时?如果是这种情况,我应该怎么做使其弹跳?我尝试了很多不同的东西,似乎没有什么可以完全反弹
最佳答案
评估后,xLeft
可能仍然超出范围,这意味着它将连续滑入if
语句。
如果增量小于对象通过边界的数量,则会发生这种情况。
您可能考虑将对象放回边界的边缘,例如
if(xLeft < 0 || xLeft > frame_width)
{
dx = -dx;
}
if (xLeft < 0)
{
xLeft = 0;
}
else if (xLeft > frame_width)
{
xLeft = frame_width;
}
else
{
xLeft = xLeft + dx;
}
如果愿意,可以删除
else
部分,只需将xLeft
移开增量...关于java - 从墙壁弹起物体,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22315518/