AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi 2 Sprites übereinander... und wieder Collision
Thema durchsuchen
Ansicht
Themen-Optionen

2 Sprites übereinander... und wieder Collision

Offene Frage von "Ricane"
Ein Thema von Ricane · begonnen am 13. Jan 2005 · letzter Beitrag vom 20. Jan 2005
Antwort Antwort
Benutzerbild von Ricane
Ricane

Registriert seit: 21. Mär 2003
Ort: Quickborn
170 Beiträge
 
Delphi 7 Architect
 
#1

2 Sprites übereinander... und wieder Collision

  Alt 13. Jan 2005, 14:43
Moin,

ich habe ein echt nervendes Problem! Ich habe zwei Sprites übereinander und möchte gerne, das mein fiktiver Mousezeiger (in der DoCollision Procedure) den oberen erkennt. Aber es wird der untere erkannt. Kann man das ändern? Hier nochmal ein paar Bilder...

Bild 1 (Kollision mit der Karte)
Bild 2 (Kollision mit einer Unit)
Bild 3 (Kollision mit einem Button (klappt aber nicht))

Also, oben Links ist eine Anzeige "AktColl". die sagt, womit die Mouse gerade kollidiert. 99 steht für einen Teil der Karte, 60 für eine Unit und 70 für ein Gebäude.

50 wäre ein Button. Das OK - Teil ist ein Button (TButton, wie auch "Units", "Edifices" und so weiter), aber er sagt mir trotzdem das ich mit der Map kolliediere... jemand ne Idee, die mich rettet?

PS: PixelCheck ist an...


Danke und sorry, das ich schon wieder das Thema Kollision aufgreife



Ricane
Hendrik
So much to Code... so less Time....

www.RicaneSoftware.de
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#2

Re: 2 Sprites übereinander... und wieder Collision

  Alt 13. Jan 2005, 14:54
Hi Ricane. Hänge bitte die Bilder als Attachements an, es gibt hier genug User mit Modem

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Ricane
Ricane

Registriert seit: 21. Mär 2003
Ort: Quickborn
170 Beiträge
 
Delphi 7 Architect
 
#3

Re: 2 Sprites übereinander... und wieder Collision

  Alt 13. Jan 2005, 14:55
Zitat von sakura:
Hi Ricane. Hänge bitte die Bilder als Attachements an, es gibt hier genug User mit Modem

......
Sorry, hab nicht dran gedacht ... Ich ändere das mal fix.....
Hendrik
So much to Code... so less Time....

www.RicaneSoftware.de
  Mit Zitat antworten Zitat
Benutzerbild von ISAS
ISAS

Registriert seit: 24. Sep 2003
Ort: Vietnam
205 Beiträge
 
Delphi 4 Standard
 
#4

Re: 2 Sprites übereinander... und wieder Collision

  Alt 17. Jan 2005, 19:26
Ist das überprüfen der collision in OnMouseMove drinn?

Wenn ja, dann mach folgendes:

Delphi-Quellcode:
procedure TForm1.DXDraw1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 if Maus=Feld then 99 //collision mit Feld
 if Maus=Button then 50 //collision mit Button
end;
Speichere keine Sachen ab, wie, wenn er eine Zahl bekommt, dass er keine anderen collisionen mehr zulässt. Er soll einfach alle Durchführen. Nun ist die Reihenfolge entscheident. Was ganz hinten ist muss am Anfang hin. Wenn nämlich was im Vordergrund ist, dann muss das erst später überprüft werden.
Signatur wurde auf Wunsch geändert. Deswegen einfach hier drauf klicken-> www.geggi.at.gg
  Mit Zitat antworten Zitat
Benutzerbild von Ricane
Ricane

Registriert seit: 21. Mär 2003
Ort: Quickborn
170 Beiträge
 
Delphi 7 Architect
 
#5

Re: 2 Sprites übereinander... und wieder Collision

  Alt 19. Jan 2005, 16:56
Ne,

habe das in der DoCollision Procedure von dem Mauszeiger... sonst ist es ja auch mega umständlich! Dort hat man ja gleich einen Sprite zum vergleichen, aber der ist halt gerne mal der unterste und nicht oberste...

Jemand noch eine andere Idee?!



Beste Grüsse,

Ricane
Hendrik
So much to Code... so less Time....

www.RicaneSoftware.de
  Mit Zitat antworten Zitat
Benutzerbild von ISAS
ISAS

Registriert seit: 24. Sep 2003
Ort: Vietnam
205 Beiträge
 
Delphi 4 Standard
 
#6

Re: 2 Sprites übereinander... und wieder Collision

  Alt 19. Jan 2005, 18:21
Kann mir das bei dir irgendwie nicht so richtig vorstellen. Der Quellcode würde mir schon sehr weiterhelfen, wenn er nicht zu lang ist. Dann könnte ich dir vielleicht eine Antwort samt funktionierendem Quellcode geben

thnx, isas!
Signatur wurde auf Wunsch geändert. Deswegen einfach hier drauf klicken-> www.geggi.at.gg
  Mit Zitat antworten Zitat
Benutzerbild von Ricane
Ricane

Registriert seit: 21. Mär 2003
Ort: Quickborn
170 Beiträge
 
Delphi 7 Architect
 
#7

Re: 2 Sprites übereinander... und wieder Collision

  Alt 19. Jan 2005, 18:27
Also...... hier die Kollisionsabfrage:

Delphi-Quellcode:
Procedure TMouseZ.DoCollision(Sprite: TSprite; Var Done: Boolean);
Begin

  (* Kollisionsliste!
    50 = Schilder
    60 = Eine Unit wurde geklickt!  (Ein Thumb im Bau Menü)
    70 = Ein Gebäude wurde geklickt (Ein Thumb im Bau Menü)
    80 = Ein Special wurde geklickt (Ein Thumb im Bau Menü)
    99 = Ein Stück der Map!
  *)

  If (Sprite Is TMap) Then AktColl := 99;
(*
  If (Sprite Is TButtons) And (Edifices.Visible = True) Then
    AktColl := 50;
*)

  If (Sprite Is TButtons) Then AktColl := 50;
  If (Sprite Is TThumbUnits) And (ThSold.Visible = True) Then AktColl := 60;
  If (Sprite Is TThumbGeb) And (ThIonCanon.Visible = True) Then AktColl := 70;
  If (Sprite Is TThumbSpecials) And (ThBiohazard.Visible = True) Then
    AktColl := 80;

  AktSprite := Sprite


End;
Und hier wird das dann ausgewertet!

Delphi-Quellcode:
Procedure TfrmMain.DXDrawMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
Var

  (* 1) Laufvariable
    2) Der alte und der neue Name für das Bild, was geladen wird!
  *)

  I: Integer;
  Alter, Neuer: String;


Begin

  (* 1) Wenn der aktuelle SPrite leer ist, dann raus!
    2) 50 bedeutet ist ist eines der Option - Schilder
    3) Erstmal alle Schilder wieder auf standard!
    4) Dann wird geprüf, ob der aktzelle ein 'Cho' (Choosen) vor dem namen
        stehen hat. Wenn ja, kommt es weg, sonstr davor!
    5) Das neue Bild wird zugewiesen!
  *)

  If AktSprite = Nil Then Exit;
  Case AktColl Of
    50:
      Begin

      End;
    60:
      Begin

      End;
    70:
      Begin

      End;
    80:
      Begin

      End;
    99:
      Begin

      End;
  End;
End;

End;
Hab die Code Teile aus der Case Anweisung mal rausgenommen......
Hendrik
So much to Code... so less Time....

www.RicaneSoftware.de
  Mit Zitat antworten Zitat
Benutzerbild von ISAS
ISAS

Registriert seit: 24. Sep 2003
Ort: Vietnam
205 Beiträge
 
Delphi 4 Standard
 
#8

Re: 2 Sprites übereinander... und wieder Collision

  Alt 19. Jan 2005, 20:42
Ich sehe eigentlich keinen Fehler bei dir. Mit dem einzigen, mit dem ICH nicht klar komm ist folgendes:

AktSprite := Sprite und If AktSprite = Nil Then Exit; Brauchst du das eigentlich!? Klammer das mal aus. Sonst gibs da bei dem Quellcode, den du gepostet hast keinen Fehler. Also muss es dann irgendwo anders liegen
Signatur wurde auf Wunsch geändert. Deswegen einfach hier drauf klicken-> www.geggi.at.gg
  Mit Zitat antworten Zitat
Benutzerbild von Ricane
Ricane

Registriert seit: 21. Mär 2003
Ort: Quickborn
170 Beiträge
 
Delphi 7 Architect
 
#9

Re: 2 Sprites übereinander... und wieder Collision

  Alt 20. Jan 2005, 10:53
Zitat von ISAS:
Ich sehe eigentlich keinen Fehler bei dir. Mit dem einzigen, mit dem ICH nicht klar komm ist folgendes:

AktSprite := Sprite und If AktSprite = Nil Then Exit; Brauchst du das eigentlich!? Klammer das mal aus. Sonst gibs da bei dem Quellcode, den du gepostet hast keinen Fehler. Also muss es dann irgendwo anders liegen
Das erste nutze ich dafür, das ich immer gleich auf den Sprite zugreifen kann (also sowas wie TThumb(Sprite).Visible := False) und das zweite habe ich, damit er die ganze Procedure nicht durchrennt, wenn Sprite eh leer ist...

Schade, hab keine Ahnung wo der Fehler sein soll....
Hendrik
So much to Code... so less Time....

www.RicaneSoftware.de
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:41 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