![]() |
jede position einer line mit der player pos vergleichen
Hallo,
ich habe eine line(moveTo, LineTo) und möchte nun jede pos mit der Player Position vergleichen, ich habe mir dazu folgenden qullcode überlegt:
Delphi-Quellcode:
for i:=0 to High(Leser) do begin
with Leser[i] do begin if m = 0 then TimeLeser(i); // für einen zeitgesteuerten Leser if Typ = 0 then begin GFL.DrawLine(x*16,(y+1)*16,(x)*16,(y+w)*16); GFL.DrawLine((x+1)*16,(y+1)*16,(x+1)*16,(y+w)*16); end; if Typ = 1 then begin // Hier die colisions abfrage für den player und der line w ist die länge, die ändert sich alle paar sekunden if (Player.X = X) and (Player.Y =Y) and (Player.X=X+W) and (Player.y =y+w ) then Player.is_C:=True; GFL.DrawLine(x*16,(y+1)*16,(x+w)*16,(y+w)*16); GFL.DrawLine((x+1)*16,(y+1)*16,((x+1)+w)*16,(y+w)*16); end; if Typ = 2 then GFL.DrawLine(x*16,(y+1)*16,(x-w)*16,(y+w)*16); end; end; procedure TLeser.CheckKey(Key:Word;Vaule:Boolean); var px,py,i:Integer; C,ismove:Boolean; begin c:=False; ismove:=False; Tasten[Key]:=Vaule; px:=player.x; py:=player.y; if Tasten[VK_LEFT] = True then begin ismove:=True; px:=px-1; end; if Tasten[VK_RIGHT] = True then begin ismove:=True; px:=px+1; end; if Tasten[VK_UP] = True then begin ismove:=True; py:=py-1; end; if Tasten[VK_DOWN] = True then begin ismove:=True; py:=py+1; end; if Map[px,py].typ <> None then c:=True; if (px < 0 ) or (py < 0 ) then c:=True; if isMove = True then begin for i:=0 to High(Leser) do begin with Leser[i] do begin if TYP = 0 then begin if (PX >= X) and (PY >=Y) and (PX <=X) and (PY <= Y+w) then begin c:=True; Player.x:=1; Player.y:=3; break; end; end; // hier wird nachgeschaut ob eine collisions stattgefunden hat if TYP = 1 then c:=player.is_C; end; end; end; // und nur wenn es keine collisions gegeben hat, werden die neuen positions angaben gesetzt ! if c = False then begin player.x:=px; player.y:=py; end; end; |
Re: jede position einer line mit der player pos vergleichen
Zitat:
|
Re: jede position einer line mit der player pos vergleichen
der player geht einfach durch die line, er erkennt einfach nicht das dort eine line ist.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:30 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