![]() |
Jump and Run Game [Andora 2D Engine]
Moin,
Bin grad dabei n Jump and Run Game zu entwickeln mit der Andora 2D Engine. Hat jemand von euch ne Idee wie ich die das Level (Spielfeld) abbilden könnte. Bis jetzt hab ich ein Hintergrundimage TadImage und darüber ein Array von Tadimages die bei der Zeichenprocedure die von der Engine ausgeht gezeichenet werden. Problem wenn sich die Figur bewegt immer neues laden der Bilder ... ein besserer Vorschlag??? Oder hat jemand von euch außer dem normalen Tutorials von Andora 2D noch Infos bzw Tutorials??? Mfg |
Re: Jumg and Run Game
Korrigier bitte den Titel deines Threads, damit man ihn auch mit der suche findet. Danke.
|
Re: Jump and Run Game [Andora 2D Engine]
Hast du dir mal das SpriteEngine-Tutorial angeschaut? Die SpriteEngine ist extra dafür da, sich um die einzelnen bewegten Bilder (Sprites) in deinem Spiel zu kümmern. Allerdings ist das ganze halt komplett Objektorientiert - du solltest dich also damit auskennen.
Allgemein kannst du alle Animationsframes in ein einziges Bild einfügen. Siehe dazu auch hier: ![]() Abschnitt "Bewegungen und Animationen" |
Re: Jump and Run Game [Andora 2D Engine]
hi
die SpriteEngine hab ich mir schon angeschaut klar mir gehts eich eher um ne Grundidee umd den logischen Aufbau meines levels mein Level muss sich ja theoretisch nicht bewegen. :firejump: mfg |
Re: Jump and Run Game [Andora 2D Engine]
Brauchst du jetzt noch Tipps oder net?
mfg Looper |
Re: Jump and Run Game [Andora 2D Engine]
jop eindeutig
bissle Nachhilfe mit den Sprits Funktioniert schon bei der Erstellung nicht |
Re: Jump and Run Game [Andora 2D Engine]
Zum Beispiel hab ich hier n Fehler beim erzeugen eines Testbildes praktisch ein Hintergrundstein im Spiel
TSteinII is ne eigen Klasse die ich mir gemacht hab
Delphi-Quellcode:
beim Create des TSteinII
//------- Spielfeld ------
imgHintergrund := dat.getHinteg(dat.getlevel(0).gethintergrund); //feld.createlevel(dat,0,adSpriteEngine); test := TSteinII.Create(adSpriteEngine); test.initialize(0,0,-150,2,0); test.Image := dat.getSteine(2); //yoda := TFigure.create(dat.getFigureimg,0,panSpielfeld); //yoda.imgAnzeige.Left := 30; //yoda.imgAnzeige.top := 300;
Delphi-Quellcode:
unit USteinII;
interface uses AdDraws, AdClasses, AdTypes, AdSprites; type TSteinII = class(TBackgroundSprite) private X : integer; Y : integer; wert : integer; spezial : integer; protected procedure DoMove(TimeGap: double);override; public XSpeed:integer; constructor Create(AParent: TSprite);override; procedure initialize(posx,posy,speed,wert,speziale : integer); procedure SetLine; end; implementation //------------------------------------------------------------------------------ // On Create //------------------------------------------------------------------------------ constructor TSteinII.Create(AParent: TSprite); begin inherited; X := 0; Y := 0; end; //______________________________________________________________________________ //------------------------------------------------------------------------------ // Initialize //------------------------------------------------------------------------------ procedure TSteinII.initialize(posx,posy,speed,wert,speziale : integer); begin self.wert := wert; self.XSpeed := speed; self.X := posx; self.Y := posy; self.spezial := speziale; end; //______________________________________________________________________________ //------------------------------------------------------------------------------ // Do Move //------------------------------------------------------------------------------ procedure TSteinII.DoMove(TimeGap: double); begin inherited; {//Der Teil aus der Renderprozedur, der sich um die Bewegungen kümmert X := X + XSpeed*TimeGap; if ((X > Engine.SurfaceRect.Right) and (XSpeed > 0)) or ((X < -96) and (XSpeed < 0)) then begin SetLine; end; } end; //______________________________________________________________________________ //------------------------------------------------------------------------------ // SetLine //------------------------------------------------------------------------------ procedure TSteinII.SetLine; begin {//Bewegt die Figur in eine neue Ebene XSpeed := -XSpeed; if XSpeed > 0 then begin AnimStart := 0; AnimStop := 7; X := -96; end else begin AnimStart := 8; AnimStop := 15; X := Engine.SurfaceRect.Right+96; end; Y := Random(Engine.SurfaceRect.Right-96); } end; //______________________________________________________________________________ end. Fehler Folgender in der Unit AdSprites bei AParent.Add(self)
Delphi-Quellcode:
wo liegt hier der Fehler ich krieg ne Zugriffsverletzungprocedure TSprite.SetParent(AParent: TSprite); begin if AParent <> nil then begin FParent := AParent; FEngine := FParent.Engine; if FParent <> nil then begin FParent.FList.Remove(Self); end; AParent.Add(Self); end else begin FParent := nil; FEngine := nil; end; end; |
Re: Jump and Run Game [Andora 2D Engine]
Hast du vielleicht vergessen eine Instanz von TAdSpriteEngine(Ex) zu erzeugen?
mfg Looper |
Re: Jump and Run Game [Andora 2D Engine]
nö die sollte eich da sein
Delphi-Quellcode:
Aufruf der Procedure
//------------------------------------------------------------------------------
// 2d Engien Erzeugen //------------------------------------------------------------------------------ procedure TFrmMain.grafikEngineCreate; begin AdDraw := TAdDraw.Create(self); AdDraw.DllName := 'AndorraOGL.dll'; AdPerCounter := TAdPerformanceCounter.Create; adSpriteEngine := TSpriteEngine.Create(nil); adSpriteEngine.Surface := adDraw; end; //______________________________________________________________________________
Delphi-Quellcode:
mfg
//------------------------------------------------------------------------------
// On Create //------------------------------------------------------------------------------ procedure TFrmMain.FormCreate(Sender: TObject); begin //------ 2D Engine wird erzeugt ----- grafikEngineCreate; if AdDraw.Initialize then begin //------ Spieldaten werden geladen ----- dat := TData.Create(adDraw); dat.dataload; //------ Spielfeld wird geladen ---- feld := TFeld.create(54,50); end else begin Application.MessageBox('Fehler beim Laden der Grafik Engine!','ERROR',MB_OK +MB_ICONERROR); Close; end; end; //______________________________________________________________________________ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:03 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