出于某种原因,当我试图在MATLAB中反转当前速度的符号时,它只是不会这样做。
例如,我从velocity_x = 3和velocity_y = 3开始(我正在画圆圈碰撞)。
现在在检查条件内我需要反转标志,然后执行以下操作:
% This doesn't work:
velocity_x = -velocity_x;
velocity_y = -velocity_y;
这些表达似乎不起作用。即使在变量列表中它仍然显示为-3,球只是抽搐而不是朝相反的方向。但是当我简单地将数字放在那里时,它工作得很好!
% This works perfectly fine:
velocity_x = -3;
velocity_y = -3;
这是整个循环:
velocity_x = 3;
velocity_y = 3;
% While is not commanded to exit the loop
while exit_loop == false
[b1_x_c, b1_y_c] = getCenter(b1);
xMove(b1, velocity_x);
yMove(b1, velocity_y);
if ((b1_x_c + radius + 1) >= WINDOW_WIDTH) || ((b1_y_c + radius + 1) >= WINDOW_HEIGHT)
velocity_x = -1 * velocity_x;
velocity_y = -1 * velocity_y;
elseif ((b1_x_c - radius - 1) <= 0) || ((b1_y_c - radius - 1) <= 0)
velocity_x = (-1) * velocity_x;
velocity_y = (-1) * velocity_y;
end
redraw;
end % of the while loop
答案 0 :(得分:1)
当您进入if
或elseif
条件满足的区域时,符号可能会更改每个周期轮次 - 速度值3 -3 3 -3
等等......
您必须使用一些标记来表示该标志已经更改并且不会更改它,直到该区域将被搁置(一种滞后)