Autor Beitrag
Ebil
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131



BeitragVerfasst: So 23.11.08 02:31 
Abend,

Ich hab mit canvas eine kugel gezeichnet, die bewegt sich auch schon (durch einen timer), aber ich will die geschwindigkeit konstant halten und das mit der richtung in die die kugel sich bewegen soll hat auch nicht ganz geklappt.

Problem 1:
Die kugel ist immer nach links oben gegangen und an den ecken links oben abgeprallt (ja diese kollision hab ich schon :D),
Es ist zwar immer anders gewesen, sie ist ein stück zurückgekommen und wieder davor geknallt usw...
Die richtung lass ich einfach durch...:
ausblenden Delphi-Quelltext
1:
2:
3:
    
GoHeight := Random(2)-2;
GoSide := Random(2)-2;


Bestimmen.
Warum steht die kugel also auf die linke obere ecke? Es ist ja immerhin zufall, ich denke aber es hängt mit den -2 zusammen...

Durch diese bestimmung der bewegung entsteht natürlich das 2. Problem:
Die Geschwindigkeit, wie löse ich das denn?
Die richtung hängt wohl auch mit der geschwindkeit zusammen, zeigt mir die beste lösung die es gibt, bzw gebt mir was zu lesen :)

Ebil
Einloggen, um Attachments anzusehen!
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: So 23.11.08 03:41 
Random(2) gibt 0 oder 1 aus. Logische Konsequenz: es kommt immer -1 oder -2 raus bei deiner Rechnung, also strebt die Kugel immer Richtung Nullpunkt des Koordinatensystems, und der ist oben links.

Ich hab mal ein Spiel geschrieben bei dem's um sowas ging. Ich empfehl dir folgendes: Benutz Fear2D. Das ist eine ganz einfach zu bedienende 2d Engine von F34r0fTh3D4rk (oder so. :motz: ), mit der auch meines geschrieben ist. Das schöne daran: Sie gibt dir ein Koordinatensystem mit Float-Koordinaten. Das ist praktisch, denn so wie du es jetzt hast, kannst du ja im prinzip nur 2 Geschwindigkeitsstufen machen: 1 oder 2 pixel pro Timerintervall. Das kann etwas... blöd sein :) Mein Spiel findest du hier: www.delphi-forum.de/viewtopic.php?t=62192 Die Fear2D Engine gibt's hier: www.delphi-forum.de/viewtopic.php?t=62017 mit einer kleinen Beschreibung wie sie funktioniert.

Wenn du magst, geb ich dir den Quelltext zu meinem Spiel per PM ;)

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Ebil Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131



BeitragVerfasst: So 23.11.08 03:44 
Ja das mit den 2 hab ich au schon gemerkt :D bisschen dämlich von mir...
Das problem ist jetzt die geschwindigkeit.
Ne Engine nehm ich jetzt nicht extra dafür, auch wenn ich mich später so oder so reinarbeiten muss, da würd ich aber glaube ich eher zu andorra2D greifen weil ichs damit schon ein paar mal versucht hab ^^ , oder direkt OpenGL auch wenn ichs bisschen kompliziert finde :/

Ebil
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: So 23.11.08 04:04 
Nun ja was die Fear2D betrifft, die hat meiner Meinung nach nen entscheidenden Vorteil gegenüber der Andorra (die ich mir nur auf screenshots gerade kurz angeguckt hab): Die Bedienung ist total simpel. Natürlich "kann" die dadurch auch weniger (vermutlich). Mein Spiel war ursprünglich wie deines eins mit Images auf der Form ... Das umschreiben von dem auf Fear2D hat mich nur Minuten gekostet. Im Endeffekt natürlich mehr, aber lauffähig war's echt innerhalb von kürzester Zeit :)

Wie auch immer, ist deine Frage damit beantwortet?

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Ebil Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131



BeitragVerfasst: So 23.11.08 13:14 
Ja aber ich mach ja grad kein Game, und wenn dann brauch ich eine starke engine =o.
Nein die frage ist noch nicht beantwortet, wie gesagt brauche ich etwas um die geschwindigkeit konstant zu halten, und somit muss ich glaube ich die richtung anders angeben, aber keine ahnung wie :/

Ebil
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: So 23.11.08 17:24 
Teil das ganze in 2 Teile. Einen Richtungsvektor multipliziert mit einem Geschwindigkeitsskalar. Dabei würde sich halt eine Engine anbieten, weil du da in Kommazahlen rechnen kannst - dadurch dass du nur Integers zur verfügung hast, hast du eine begrenzte Zahl an Richtungen, nämlich 8 (Wenn man davon ausgeht dass dein Vektor nur so aussieht: ([-1, 0, 1], [-1, 0, 1]) ) und ebenso eine begrenzte Zahl an Geschwindigkeitsstufen, ich würd sagen ab 5-10 Pixeln pro Intervall sieht's nix mehr gleich.

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Ebil Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131



BeitragVerfasst: Mo 24.11.08 20:54 
Hört sich aber kompliziert an :/
Ma schaun was ich nun mach..