![]() |
Sprites unter DelphiX drehen
Hallo,
wie kann ich Sprites unter DelphiX drehen? |
Habs selber herausgefunden. :lol:
Es geht mit der Eigenschaft Angle von TImageSprite (-Ex). Wenn man noch dazu den Sprite in die Richtig drehen will, wohin er schaut geht das mithilfe von
Delphi-Quellcode:
was man unter DoMove vom Sprite einfügen muss.
X := X + Cos256(Angle);
Y := Y + Sin256(Angle); Ich hoffe ich habe auch denjenigen geholfen, die nach dem gleichen suchten. [edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit] |
Sprites unter DelphiX drehen
Hi,
ich habe delphix für delhi 6.0 , bei mir funkst das drehen nicht! Wie genau muss ich das denn machen? Ein Bespiel wäre sehr nett!
Delphi-Quellcode:
Bei Angle muss ich doch einen Winkel angeben !?
Procedure TRaumschiff.domove(Movecount:Integer);
Begin inherited domove(movecount); If isleft in form1.input.states Then Begin x:=x+cos256(Angle); end; collision; end; jedenfalls macht er es so nicht! z.B. x:=x+cos256(Angle); = Raumschiff verschieb sich nur! Habe ich ein Brett vorm Kopf oder geht es wirklich nit!?!?!? Bitte um Hilfe! ATwardz |
Re: Sprites unter DelphiX drehen
Ich hoffe, ich kann das noch richtig, da ich ja seit einigen Monaten komplett auf Linux umgestiegen bin...
Aber so wie es aussieht, hast du der VARIABLEN "Angle" keinen Wert zugewiesen (was dann meistens als 0 wirkt). Deshalb dreht sich dein Sprite auch nicht. Verändere also einfach den Wert dieser Variable! |
Re: Sprites unter DelphiX drehen
In meinen Experimenten, habe ich Angle einfach durch eine Zahl ersetzt, der gleiche Effekt blieb bestehen, z.B.
Delphi-Quellcode:
Habe aber auch mal ne Frage zu deinem Umstieg, is es denn Sinnvoll komplett umzusteigen!
x:=x+cos256(90);
Wie sieht das mit der Anzahl der Komponenten unter Kylix aus? Danke! |
Re: Sprites unter DelphiX drehen
Dann kann ich dir leider auch nicht weiterhelfen... :(
Also, ich hab es bisher den Umstieg wenig bereut! Aber das muss jeder selbst entscheiden... Zu Kylix: Davon würde ich echt abraten... Nicht wegen den Komponenten (einfach unter Delphi mal auf "Neu -> Kylix-Unit" oder ähnlich klicken, dann kannst du sehen welche Komponenten vorhanden sind), aber die erstellten Programme können bisher standardmäßig nur in der Kylix-IDE gestartet werden. Damit man sie aus Linux selber herausstarten kann, muss man ganz schön viel tun (ich selber hab es trotz mehrerer Tutorials bisher nicht geschafft... :-/) |
Re: Sprites unter DelphiX drehen
Zitat:
Hm. Also wenn ich im Matheunterricht richtig aufgepasst habe, dann ist der Cosinus von 90 Grad doch 0 .... also drehst du den/das/die Sprite um 0 Grad. Mich wundert es da nicht, wenn nix passiert. Kann aber auch gut sein, dass ich mich irre, bin in Sachen DelphiX noch nicht besonders erfahren. Grunzer |
Re: Sprites unter DelphiX drehen
JA, darüber habe ich zwar nit nachgedacht das cos(90) = 0 is aber das auch egal weil er macht es bei jedem Winkel nit!
Ich verstehe auch warum er es nit macht, zumindest erscheint es mir logisch, er hat einen x Wert(z.B. 4) und nun soll der Sprite um cos(45) gedreht werden, warum addiere ich diesen wert dann auf x?? das Ergebnis ist dann ja ca. 1.7 , also würde er 1,7 nach rechts gehen anstatt 1! Was mache ich also falsch und was verstehe ich falsch? ATwardz |
Re: Sprites unter DelphiX drehen
Ich habs! :lol:
Erstens , hatte ich nicht den Sprite als TImageSpriteEX erstellt sondern TImageSprite! :oops: Naja, danach lief es jedoch auch nit! Mein Fehler war irgendwie simpel, jedoch fand/find ich ihn dennoch logisch! Da der Code ja
Delphi-Quellcode:
lautete, danchte ich man könnte für Angle direkt eine Zahl einsetzen,logisch oder!?
X := X + Cos256(Angle);
Y := Y + Sin256(Angle); Das man nun unbedingt der VAriable Angle einen Wert zuweisen muss, wusste ich ja nit! wenn es geht spare ich gerne Variablen ein! :-D Naja für alle die ein Meister des Mißverstehens sind, so wie ich!So ist es für mich und somit für keinen mehr mißzuverstehen!Hoffe ich! :wall:
Delphi-Quellcode:
Um endlich zum Abschluss dieses Threats zu kommen! :lol:
...
TSprite = class(TImageSpriteEX) Public constructor create (aparent:Tsprite);override; procedure DoMove(MoveCount: Integer);override; end; ... Procedure TSprite.domove(MoveCount: Integer); Begin Angle:=Angle+1; Inherited domove(movecount); X := cos256(Angle); Y := sin256(Angle); end; Vielen Dank nochmal an alle die mir geholfen haben! ATwardz |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:32 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