Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
FreePascal / Lazarus
|
DelphiX - Objekte drehen(Autos)
4. Sep 2004, 18:53
[/delphi]Hallo,
ich möchte ein kleines auto spiel schreiben und habe probleme mit dem drehn des autos:
Delphi-Quellcode:
procedure TGame.KeyCheck(Key:Word);
begin
if Key = VK_RIGHT then begin
if Player.zr + 10 <= Lings then
Player.zr:=Player.zr+10;
// Player.x:=Player.x-10;
end;
if Key = VK_Left then begin
if Player.zr - 10 >= -Rechts then
Player.zr:=Player.zr-10;
// Player.x:=Player.x-10;
end;
if Key = VK_UP then begin
Player.x:=Player.x+10;
end;
if Key = VK_Down then begin
Player.x:=Player.x-10;
end;
if key = vk_f1 then stop:=not stop;
end;
Const:
Delphi-Quellcode:
const
lings = 60;
rechts = 60;
oben = 257;
Unten = 130;
ich habe mir eine kleine grafik lib geschrieben dort habe ich den befehl DrawRoate verwendet:
Delphi-Quellcode:
procedure TDX.DrawRoateImage(Name:String; x,y,a,pi:Integer; cx,cy:Double);
var
i:Integer;
begin
i:=DXImageList1.Items.Find(Name).Index;
DXImageList1.Items[i].DrawRotate(DXDraw1.Surface,x,y,DXImageList1.Items[i].Width,DXImageList1.Items[i].Height,pi,cx,cy,a);
end;
aufrufen tue ich den so:
Delphi-Quellcode:
procedure TGame.Draw;
var
i:Integer;
begin
for i:=0 to high(Map) do begin
GFL.DrawImage(Map[i].Name,Map[i].Tex,Map[i].x,Map[i].y);
end;
// GFL.DrawImage('A' + IntToStr(Player.typ) + IntToStr(Player.richtung),0,player.x,Player.y);
{if stop = False then begin
if PLayer.zr1 >= 5 then begin
Player.zr1:=0;
if player.zr <= 360 then begin
inc(player.zr);
end
else
player.zr:=player.richtung;
end
else
inc(player.zr1);
end;}
GFL.DrawText(IntToStr(PLayer.zr),300,400,16,clYellow,clRed);
GFL.DrawRoateImage('A' + IntToStr(Player.typ),player.x,player.y,player.zr,0,1,0);
end;
der auskometrite teile war nur ein test(und ich weiß nicht ob ich den nochmal später brauche) der dreht einfach nur ein objekt immer und dies langsamm !!
das problem ist jetzt das der dreh winkel zu groß ist und ich würde auch noch gerne die geschwindigkeit einstellen können, wie mache ich dies genau ???
Michael Springwald MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
|
|
Zitat
|