标志反向不起作用

时间:2016-04-27 04:09:09

标签: algorithm matlab collision

出于某种原因,当我试图在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

1 个答案:

答案 0 :(得分:1)

当您进入ifelseif条件满足的区域时,符号可能会更改每个周期轮次 - 速度值3 -3 3 -3等等......

您必须使用一些标记来表示该标志已经更改并且不会更改它,直到该区域将被搁置(一种滞后)