Hi,
keine Lösung aber nahe dran!
Delphi-Quellcode:
Procedure Tgegenstand.DoMove(MoveCount: Integer);
Begin
Inherited domove(movecount);
If isup in form1.dxinput1.states
Then
Begin
Player.y:=Player.Y-1;
Player.collision;
Player.Y:=Player.Y+1;
If g=0 then y:=y+1;
g:=0;
end;
If isleft in form1.dxinput1.states
Then
Begin
Player.x:=Player.x-1;
Player.collision;
Player.x:=Player.x+1;
If g=0 then x:=x+1;
g:=0;
end;
If isdown in form1.dxinput1.states
Then
Begin
Player.y:=Player.Y+1;
Player.collision;
Player.Y:=Player.Y-1;
If g=0 then y:=y-1;
g:=0;
end;
If isright in form1.dxinput1.states
Then
Begin
Player.x:=Player.x+1;
Player.collision;
Player.x:=Player.x-1;
If g=0 then x:=x-1;
g:=0;
end;
end;
Procedure TPlayer.docollision(sprite:Tsprite;var done:boolean);
Begin
if sprite is TGegenstand then
Begin
g:=1;
end;
end;
Der Code benutz den Plyer um zu prüfen ob eine Collision beim nächsten Schritt stattfinden würde! Je nachdem wir der Schritt ausgeführ oder nicht!
Allerdeings bleiben manche Büsche ein Pixel zurück!<-- Warm das so ist weiss ich nicht ,leider!
Das Problem ist das DelphiX nicht kapiert das es alle Gegenstände vom Typ TGegenstand identisch behandeln soll!
Vielleicht kann dir hier jemand weiter helfen!
http://terraqueous.f2o.org/dgdev/viewforum.php?f=15