![]() |
Problem mit Kollisionsabfrage.
Ich habe mir ein rundes Pong geschrieben.
Also das Paddle bewegt sich auf einer Kreisbahn und der Ball darf diesen kreis nicht verlassen. Bei meiner Kollisionsabfrage zwischen Ball und Paddle gibt es aber das komische Problem, dass der Ball manchmal hängenbleibt oder HINDURCHWANDERT.
Delphi-Quellcode:
Also das mit dem random ist nur zum testen da und es funktioniert auch ohne noch nicht. (z.B. vx:=-vx).
procedure TBall.stoss(aPaddle:TPaddle);
var i:integer; begin for i:= aPaddle.Winkel-aPaddle.Breite to aPaddle.Winkel+aPaddle.Breite do if sqrt(sqr(x-(round(cos(i/57.3)*(150))+200))+sqr(y-(round(sin(i/57.3)*(150))+200)))<r+8 then begin if vx>0 then vx:=-random(5)+1 else vx:=random(5)+1; if vy>0 then vy:=-random(5)+1 else vy:=random(5)+1; Punkte:=Punkte+1; end; end; Mein Timer der das ganze regelt sieht so aus:
Delphi-Quellcode:
Ball und Paddle sind heir eben meine
procedure TForm1.Timer1Timer(Sender: TObject);
var i:integer; begin if GetAsyncKeystate(VK_LEFT) < 0 then Paddle.move(Paintbox1.Canvas,6) else if GetAsyncKeystate(VK_RIGHT) < 0 then Paddle.move(Paintbox1.Canvas,-6) else Paddle.move(Paintbox1.Canvas,0); for i:= 1 to High(Ball) do Ball[i].move(Paintbox1.Canvas); Form1.Caption:='Cyclo Pong - '+inttostr(Punkte)+' Punkte'; end; TBall(x,y(koordinaten),vx,vy(geschwindigkeiten),r( radius),farbe) variable und meine TPaddle(Winkel,Breite und farbe) variable. Hat vllt jemand 'ne idee wie ich das Problem beheben könnte? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz