AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Geschwindigkeit umkehren

Ein Thema von DelphiUser1 · begonnen am 11. Nov 2012 · letzter Beitrag vom 21. Nov 2012
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#21

AW: Geschwindigkeit umkehren

  Alt 12. Nov 2012, 01:09


Random für x und für y ... ok, dann weißt Du ja wo Du hinfassen musst, wobei gegen eine zufällige Positionierung nichts spricht solange Du weißt worauf sich x und y beziehen ... (z.B. top/left, center ...)
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#22

AW: Geschwindigkeit umkehren

  Alt 12. Nov 2012, 02:52
2.ja das ist richtig, ich will es auch gerne alleine schaffen, aber so ganz peile ich es noch nicht.
Dann geh dein Konzept doch nochmal durch. Am besten mit 'nem Stift und 'n paar Blättern Papier. Wichtig ist, dass du dir auch im Kopf visualieren kannst, was im Code passiert und wieso er das macht, was er macht.

Zeichne deine Kreise und deine Objekte, beschrifte sie, zeichne Pfeile, gepunktete Linien um Bewegungen darzustellen ...

x und y zeigen die Position auf x und y Achsen an aber geht diese Position jetzt von der Mitte des Kreises aus oder wieso verrechnen wir diese Koordinaten mit der höhe?
X und Y beziehen sich nicht auf den Mittelpunkt, sondern auf die obere linke Ecke des Sprite-Objekts.

Wenn du also eine Kollision rechts vom Objekt feststellen willst, muss du X + Breite addieren und prüfen, ob sie >= dem X-Wert des Kollisionsobjekts sind.

Wenn du auf eine Kollision links vom Objekt prüfen willst, musst du schauen, ob der X-Wert des Kollisionsobjekts + Breite des Kollisionsobjekts <= dem X-Wert deines Objekts sind.

Denn einem normalen Sprite-Objekt liegt in der Regel immer ein Quadrat zu Grunde, mit dem man arbeitet, auch wenn es einen Kreis darstellt (der Kreis wird dann in das Quadrat gezeichnet).
  Mit Zitat antworten Zitat
DelphiUser1

Registriert seit: 15. Sep 2012
56 Beiträge
 
#23

AW: Geschwindigkeit umkehren

  Alt 16. Nov 2012, 18:39
So also da bin ich wieder und habe mich direkt mal an die Arbeit gemacht.
X und Y werden wie folgt beschrieben:

Delphi-Quellcode:
 for b := 0 to high(Kreis) do
  begin
    Kreis [b].x := Kreis [b].x + Kreis [b].speedx; //Geschwindigkeit X
    Kreis [b].y := Kreis [b].y + Kreis [b].speedy; //Geschwindigkeit Y
    With Kreis [b] do
    begin
      Left := Kreis [b].x;
      Top := Kreis [b].y;
    end;
Nun zeigen die beiden ja die Position genau so an, wie es notwendig wäre. Wieso funktioniert es nun trotzdem nicht bzw. wieso prallt der Ball mit Bummis Sourcecode falsch ab und bugt rum
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#24

AW: Geschwindigkeit umkehren

  Alt 16. Nov 2012, 18:53
pack das ganze doch mal in ein Zip, so stochern wir im Nebel rum ...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#25

AW: Geschwindigkeit umkehren

  Alt 16. Nov 2012, 18:57
Irgendwie hab ich das Gefühl, dass das Ganze bei dir 'n ziemliches Flickwerk ist. Daher nochmal der Tipp: Geh dein Projekt und dein Vorhaben nochmal analytisch durch. Denn wenn du nicht weißt, warum und weshalb etwas geht oder nicht geht, dann weil dir selbst nicht klar ist, was da überhaupt passiert. Und da kommt man dahin, wo wir jetzt sind: Unklare Fragestellung durch unklare Problemformulierung, weil du scheinbar selbst den Überblick irgendwie über das Projekt verloren hast. Oder?

1) for b := 0 to high(Kreis) do Warum 0 to ... und nicht Low(Kreis) to ...?

2)
Delphi-Quellcode:
With Kreis [b] do
    begin
      Left := Kreis [b].x;
      Top := Kreis [b].y;
    end;
Wo wird Width und Height gesetzt?
  Mit Zitat antworten Zitat
DelphiUser1

Registriert seit: 15. Sep 2012
56 Beiträge
 
#26

AW: Geschwindigkeit umkehren

  Alt 16. Nov 2012, 19:11
Okay alles klar, ich habe den ganzen Kram mal angehängt
Angehängte Dateien
Dateityp: zip ReCreisis.zip (3,49 MB, 19x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#27

AW: Geschwindigkeit umkehren

  Alt 16. Nov 2012, 19:44
Die Bitmapprobleme hat ja Sir Rufo bereits beantwortet.
Das Klebeproblem lässt sich hierdurch beseitigen, allerdings ist das noch nicht final, da durch die Bedingungen Kollisionen z.B. oben und rechts gleichzeitig gefunden werden, was zu einer optisch nicht nachzuvollziehenden Reflexion führt. Ich habe leider jetzt nicht mehr die Zeit mir eine brauchbare Bedingung zu suchen. Aber wir haben ja genügend Mitstreiter hier ...
Delphi-Quellcode:
    if InterSectRect(Stubrect, Kreis[b].BoundsRect, Image3.BoundsRect) and Image3.Visible then // Box
    begin

      if ((Kreis[b].y + Kreis[b].Height) > Image3.top) or (Kreis[b].y <= (Image3.top + Image3.Height)) then
        Kreis[b].speedy := -Kreis[b].speedy;

      if ((Kreis[b].x + Kreis[b].Width) > Image3.left) or (Kreis[b].x <= (Image3.Left + Image3.Width)) then
        Kreis[b].speedx := -Kreis[b].speedx;
    end;


    Kreis[b].x := Kreis[b].x + Kreis[b].speedx;
    Kreis[b].y := Kreis[b].y + Kreis[b].speedy;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
DelphiUser1

Registriert seit: 15. Sep 2012
56 Beiträge
 
#28

AW: Geschwindigkeit umkehren

  Alt 16. Nov 2012, 23:07
Danke trotzdem für die ganze Mühe
Mit diesem Code funktoniert die Kollision leider nicht wie gewollt (altes Problem, Einfallswinkel=Einfallswinkel) und manchmal bleibt ein Kreis hängen. Aber ich bin schon ein Stück weiter, danke dafür.
Haben die Anderen den vielleicht noch Ideen, dass zu realisieren?
Ist wichtig und sollte bis Montag fertig sein, wenn möglich
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#29

AW: Geschwindigkeit umkehren

  Alt 17. Nov 2012, 00:51
Den elastischen Stoß hab' ich hier mal gepostet:

http://forum.delphi-treff.de/showthr...2-Bewegte-B%#9

Gruß
Thomas
  Mit Zitat antworten Zitat
DelphiUser1

Registriert seit: 15. Sep 2012
56 Beiträge
 
#30

AW: Geschwindigkeit umkehren

  Alt 17. Nov 2012, 12:58
@Bjoerk: So ganz blicke ich bei dem Code noch nicht durch. Mit Matrizen habe ich mich noch nicht beschäftigt
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:34 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