![]() |
DXDraw und die koordinaten.
hallo
ich arbeite an nem isometrischen tiles engine. Bis jetzt leuft alles ganz super aber ich bekomme es einfach nciht hin das ich per mausClick die korekten koordinaten bekomme ... deshalb ist bei mir das gefuehl hochgekommen das ich da irgendwas falsch mache oder mir das falsch vorstelle ... hier ein wenig code ..
Code:
somit kann ich den bildschirm bewegen und die mappe scrollen
procedure TForm5.DXTimerTimer(Sender: TObject; LagCount: Integer);
begin if not DXDraw.CanDraw then exit; DXInput1.Update; if not DXDraw.CanDraw then exit; if isLeft in DXInput1.States then begin if ( startx > 2550) then begin startx:=2550; GlobalX:=GlobalX+scrollspeed; end else begin inc( startx, scrollspeed ); GlobalX:=GlobalX-scrollspeed; end; end; if isRight in DXInput1.States then begin if ( startx < -3140 ) then begin startx:=-3140; GlobalX:=GlobalX-scrollspeed; end else begin dec( startx, scrollspeed ); GlobalX:=GlobalX+scrollspeed; end; end; if isUp in DXInput1.States then begin if ( starty > 50) then begin starty:=50; GlobalY:=GlobalY-scrollspeed; end else begin inc( starty, scrollspeed ); GlobalY:=GlobalY+scrollspeed; end; end; if isDown in DXInput1.States then begin if ( starty < -3000) then begin starty:=-3000; GlobalY:=GlobalY+scrollspeed; end else begin dec( starty, scrollspeed ); GlobalY:=GlobalY-scrollspeed; end; end; globalx und gloably waren die variablen in meinem versuch.Sie sollten festhalten wieviel ich gescrollt bin.
Code:
mit der DXMouseDown .... will ich ganz einfach jetzt wissen auf welche koordinate ich geklickt habe ... das problem ist ja es waere keine grosse sache wenn das bild nicht scrollbar waere .
procedure TForm5.DXDrawMouseDown(Sender:TObject;Button : TMouseButton;Shift:TShiftState;X,Y:Integer);
var XClick,YClick:integer; xlogic,ylogic:integer; begin if(button = mbLeft)then begin if(unitsnotselected)then begin XClick:=X; YClick:=Y; end; end; end; in xclick,yclick halte ich die koordinaten fest wo ich geklickt habe ...diese ist aber relativ zu der DXDraw oberflaechte also nicht zu der logischen koordinate. ich dachte mir deshalb ich mache eine logische koordinate xlogic,ylogic wobei : xlogic:=X+globalx; ylogic:=-Y+globaly: //habe hier -Y weil die koordiante negativ ist //jeh weiter ich runter scrolle ... das weis ich weil wenn ich die //tiles von hand ausrechne wo sie stehen kommen mit meiner metode //negative nummern raus! Wenn jemand einen tipp hat wie ich das loesen koennte waere ich dankbar. |
arbeites du mit DelphiX ?
wenn ja: könntes du mir dein projekt mal an: mimi_171@gmx.de senden? dann könnte ich dir vieleicht helfen;) achja,ich schreibe auch mit DelphiX meine Spiele( ![]() MFG Michael Springwald |
das ganze hat sich erledigt ...alles funktioniert wunderbar aber danke der nachfrage. Bis dann
hast du ne homepage von deinen projekten ? wenn ja dann kommt doch mal bei mir vorbei ![]() da kannst du ja dann in deinem gaestebuch einen eintrag hinterlassen ...weurde mich freuen was von dir zu hoehren. ciao PS: das projekt ist zu gross fuer e-mail. :nerd: |
ja ich habe eine Hompage:
![]() könntes du mir mal bitte beschreiben wie man sowas macht was du gemacht hast? MFG Michael Springwald |
der link
![]() ist down oder broken ... was willst du den genau wissen uebers proggen? |
ich wollte was über iso wissen,also das was du da in deinem Progrmam hast, ich verstehe das leider nicht so gut.
Wie hast du das mit DelphiX geschaft ? ich schreibe auch mit delphiX meine Programme;) es währe toll wenn du mit eine beschreibung zu senden könntes oder das hier im forum rein posten. Wie kann man so eine isometic ansicht erstellen ? wie kann man später darauf in unterschiedlicher Größe Objekte bauen ? also wie z.B in Age of Mythology ? Danke für antworten;) achja: der link ![]() funktioniert;) MFG MIchael Springwald |
der link
![]() kontrolliere doch ein wenig besser befor du postest ..merci :? [EDIT]der link geht jetzt [/EDIT] was das ISO engine angeht ...ja das habe ich ganz alleine gemacht ... ich kann dir eineige quellen nenne wo du infos bekommen kannst. ich habe leider nicht si die zeit jetzt (heute) darauf einzu gehen weil habe morgen im institut zu sein. ![]() ![]() ![]() ![]() ansonsten benutzt mal ![]() ansonsten kann ich nur sagen das meine tiles engine auf dem bekannten DXDraw besteht und zusammen gesetzt ist aus vielen kleinen "TILES" welche dann eben die mappe ergeben.Ich rate dir allerdings die ziehle nicht so hoch zu stecken wie z.B in Age of Mythology . Bedenke das ich an einem staatlichen italienischen institut fuer informatik studiere und deshalb die noetigen grundkenntnisse besitze. Diese sind fundamental um eine grundstuktur fuer eine iso engine zu verstehen.OOP ist allerdings dabei nicht unbedingt notwendig da es auch tradizionell geht. fuer weiter infos kannst du mir gerne schreiben oder posten ... hoffe habe dir ein wenig weiterhelfen koennen . :coder: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:20 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