Vielen Dank für die vielen Ratschläge aber leider besteht das Problem weiterhin.
Die Bedingung für OnCollision stimmt auf jeden Fall und er kommt auch bis zum Case.
Delphi-Quellcode:
procedure TBrick.onCollision(Edge : Integer; Ball : TBall);
begin
case Edge of
1: Ball.YSpeed := Ball.YSpeed * (-1);
2: Ball.YSpeed := Ball.YSpeed * (-1);
3: Ball.XSpeed := Ball.XSpeed * (-1);
4: Ball.XSpeed := Ball.XSpeed * (-1);
end;
end;
wenn ich zb. Ball.YSpeed := 1; setze funktioniert es einwandfrei und es erreicht den Effekt den ich eigentlich mit *(-1) erreichen wollte.
Delphi-Quellcode:
procedure TBrick.onCollision(Edge : Integer; Ball : TBall);
begin
case Edge of
1: Ball.YSpeed := 1;
2: Ball.YSpeed := Ball.YSpeed * (-1);
3: Ball.XSpeed := Ball.XSpeed * (-1);
4: Ball.XSpeed := Ball.XSpeed * (-1);
end;
end;
Und Ball.YSpeed ist in diesem fall auch 100% -1 weil folgendes auch funktioniert:
Delphi-Quellcode:
procedure TBrick.onCollision(Edge : Integer; Ball : TBall);
begin
if Ball.YSpeed = -1 then Ball.YSpeed := 1;
end;