![]() |
[DelphiX] die Kamera bewegen
Hi,
wie kann ich die Kamera passend zu der Position meines Autos auf einer Karte bewegen ?
Delphi-Quellcode:
[Edit]Sry, falsche Rubrik, könnt ihr "zur besseren Übersicht" verschieben.[/Edit]
TCar = class(TImageSpriteEx)
private speed: Single; public constructor Create(AParent: TSprite); override; procedure DoMove(MoveCount: Integer); override; end; var frmMain : TfrmMain; Car : TCar; implementation {$R *.DFM} constructor TCar.Create(AParent: TSprite); begin inherited Create(AParent); Speed := 0; end; procedure TCar.DoMove(MoveCount: Integer); begin inherited DoMove(MoveCount); if (isLeft in frmMain.DXInput.States) and (speed <> 0) then if speed < 0 then Angle := angle + 1 else Angle := angle - 1; if (isRight in frmMain.DXInput.States) and (speed <> 0) then if speed < 0 then Angle := angle - 1 else Angle := angle + 1; if isUp in frmMain.DXInput.States then begin if speed < 7 then speed := speed + 0.05; end; if isDown in frmMain.DXInput.States then begin if speed < 7 then speed := speed - 0.05; end; X := X + cos256(Angle) * speed; if (x <= 0)(* or (x + width >= frmMain.DXDraw.Width)*) then begin x := x - cos256(Angle) * speed; speed := 0; end; Y := Y + sin256(Angle) * speed; if (y <= 0) or (y + height >= frmMain.DXDraw.height) then begin y := y - sin256(Angle) * speed; speed := 0; end; end; procedure TfrmMain.FormCreate(Sender: TObject); begin DXMap.LoadMap('map\maps\map2.dxm'); Car := TCar.Create(DXSpriteEngine.Engine); with Car do begin Image := frmMain.DXImageList.Items.Find('Car'); X := 150; Y := 380; Z := 0; Width := Car.Image.Width; Height := Car.Image.Height; end; end; // Interval=0 procedure TfrmMain.DXTimerTimer(Sender: TObject; LagCount: Integer); begin DXInput.Update; DXSpriteEngine.Move(1); DXDraw.Surface.Fill(RGB(13, 180, 50)); DXDraw.Surface.Fill(clBlack); SpriteEngineMap.Draw; DXSpriteEngine.Draw; DXDraw.Flip; end; procedure TfrmMain.FormDestroy(Sender: TObject); begin if not (DXMap = nil) then begin DXMap.Free; end; if not (DXDraw = nil) then begin DXDraw.Free; end; end; |
Re: [DelphiX] die Kamera bewegen
Ich komme so langsam von diesem Kartensystem ab, denn je größer die Karte ist, desto schlimmer ruckelt es. Wie könnte man denn anders eine Karte aus einer Datei laden ?
Wie muss ich den Code verändern, um die Geschwindigkeit miteinzubeziehen (die Variable speed sollte dabei helfen)?
Delphi-Quellcode:
SpriteEngineMap.Engine.X := -X + Engine.Width - Width;
SpriteEngineMap.Engine.Y := -Y + Engine.Height - Height; |
Re: [DelphiX] die Kamera bewegen
2. und letzter Push. :( :(
|
Re: [DelphiX] die Kamera bewegen
Also, ich verstehe deine Frage ehrlich gesagt nicht richtig.
Du willst die Kamera hinter deinem Auto herfahren lassen. Mit deinem Code "klebt" die Kammera am Auto. Möchtest du, dass die Kammera beim beschleunigen zurückfällt oder so etwas? |
Re: [DelphiX] die Kamera bewegen
Ich möchte, dass die Kamera wie bei GTA2 immer beim Auto ist, denn das Spiel wird in Vogelsperspektive programmiert. Der obige Kameraverschiebcode ist übrigens nicht ganz richtig.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 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