Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Sprites unter DelphiX drehen (https://www.delphipraxis.net/797-sprites-unter-delphix-drehen.html)

webby 7. Sep 2002 22:11


Sprites unter DelphiX drehen
 
Hallo,
wie kann ich Sprites unter DelphiX drehen?

webby 10. Sep 2002 16:26

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:
X := X + Cos256(Angle);
Y := Y + Sin256(Angle);
was man unter DoMove vom Sprite einfügen muss.

Ich hoffe ich habe auch denjenigen geholfen, die nach dem gleichen suchten.

[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]

ATwardz 15. Nov 2003 23:07

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:
Procedure TRaumschiff.domove(Movecount:Integer);
Begin
  inherited domove(movecount);

  If isleft in form1.input.states
  Then
  Begin
    x:=x+cos256(Angle);
  end;

  collision;
end;
Bei Angle muss ich doch einen Winkel angeben !?
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

webby 16. Nov 2003 08:32

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!

ATwardz 16. Nov 2003 11:53

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:
x:=x+cos256(90);
Habe aber auch mal ne Frage zu deinem Umstieg, is es denn Sinnvoll komplett umzusteigen!
Wie sieht das mit der Anzahl der Komponenten unter Kylix aus?

Danke!

webby 19. Nov 2003 11:50

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... :-/)

Grunzer 20. Nov 2003 20:02

Re: Sprites unter DelphiX drehen
 
Zitat:

Zitat von ATwardz
In meinen Experimenten, habe ich Angle einfach durch eine Zahl ersetzt, der gleiche Effekt blieb bestehen, z.B.

Delphi-Quellcode:
x:=x+cos256(90);
Danke!


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

ATwardz 20. Nov 2003 21:59

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

ATwardz 20. Nov 2003 23:00

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:
X := X + Cos256(Angle);
Y := Y + Sin256(Angle);
lautete, danchte ich man könnte für Angle direkt eine Zahl einsetzen,logisch oder!?
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:
...
  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;
Um endlich zum Abschluss dieses Threats zu kommen! :lol:

Vielen Dank nochmal an alle die mir geholfen haben!

ATwardz


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz