【发布时间】:2019-11-20 01:50:58
【问题描述】:
我必须在打开的 SFML 中以一定角度移动一个球并将其保持在窗口大小内(就像 DVD 一样),但我当前的功能使它到底部并且不会“反弹”。它滑过底部并在到达另一个角落时停止。初始位置为(1,1)
void Bubble::updatePosition() {
if( isTopBottom() ){
do{
_x += .1;
_y += -.2;
}while( !isTopBottom() );
}
else if( isLeftRight() ){
do{
_x += -.1;
_y += .2;
}while( !isLeftRight() );
}
else{
_x += .1;
_y += .2;
}
_bubble.setPosition(_x, _y);
}
isLeftRight、isTopBottom 是布尔值,用于检查它们是否已到达边缘
【问题讨论】:
-
如何检查
isTopBottom()和isLeftRight()?你在比较浮点数吗? -
我正在比较 "_bubble.getPosition().x/y >= 640" 的布尔值,窗口本身是 640x640
-
对象可能会从顶部反弹,然后从侧面反弹。只有当它从底部反弹时,您的步进循环才会停止,不是吗?您必须停止循环使用任何类型的边界。