AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi [Andorra2D]: Wie bekomme ich raus wo die Kollision stattfand
Thema durchsuchen
Ansicht
Themen-Optionen

[Andorra2D]: Wie bekomme ich raus wo die Kollision stattfand

Ein Thema von Spiderpig_GER_15 · begonnen am 12. Mai 2008 · letzter Beitrag vom 14. Mai 2008
Antwort Antwort
Benutzerbild von Spiderpig_GER_15
Spiderpig_GER_15

Registriert seit: 17. Mär 2008
298 Beiträge
 
Delphi 7 Personal
 
#1

[Andorra2D]: Wie bekomme ich raus wo die Kollision stattfand

  Alt 12. Mai 2008, 17:37
Hi,

Ich habe 2 Männchen, die man über den Bildschirm steuern kann, und Einige Hindernisse.
Wie mache ich es am besten das man, wenn man gegen ein Hinderniss stößt nicht weiter(dagegen) laufen kann?

Meine Kenntnisse reichen aus um bei einer Kollision das Männchen an einen bestimmten Punkt zu setzten, aber ich
weiß nicht, wie ich es machen soll, dass man ncith weiter durch das hinderniss durchlaufen kann.

Ich hoffe ihr versteht was ich meine,

MfG Spiderpig
---Zufall ist das Inkognito Gottes---
  Mit Zitat antworten Zitat
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#2

Re: [Andorra2D]: Wie bekomme ich raus wo die Kollision statt

  Alt 12. Mai 2008, 21:32
Prüf doch einfach jedes mal bevor du die Figur bewegst ob sie gerade kollidiert. Tut sie das, dann brich die Bewegung einfach ab.
Dabei musst du natürlich überprüfen ob die Richtung der Kollision mit der der Bewegung übereinstimmt, damit man die Figur auch wieder von einem Hinderniss weg bewegen kann
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#3

Re: [Andorra2D]: Wie bekomme ich raus wo die Kollision statt

  Alt 12. Mai 2008, 21:39
Du musst halt einfach die X- und Y-Koordinaten des kollidierenden Sprites mit deiner Figur vergleichen. Stell dir das einfach bildlich vor, in Form zweier Boxen.

Wenn Figur.X > Sprite.X, ist die Kollision von rechts passiert.
Wenn Figur.X < Sprite.X, ist die Kollision von links passiert.
Wenn Figur.Y > Sprite.Y, ist die Kollision von unten passiert.
Wenn Figur.Y < Sprite.Y, ist die Kollision von oben passiert.

Dazu kannst du ein Set definieren: TCollisionEdges = set of (ceTop, ceBottom, ceLeft, ceRight). Und jenachdem, welche Bedingung von da oben zutrifft, fügst du das Teil zum Set hinzu (CollisionEdges := CollisionEdges + [ceTop]; ...).
  Mit Zitat antworten Zitat
Benutzerbild von Spiderpig_GER_15
Spiderpig_GER_15

Registriert seit: 17. Mär 2008
298 Beiträge
 
Delphi 7 Personal
 
#4

Re: [Andorra2D]: Wie bekomme ich raus wo die Kollision statt

  Alt 12. Mai 2008, 23:42
Zitat von Nuclear-Ping:

Dazu kannst du ein Set definieren: TCollisionEdges = set of (ceTop, ceBottom, ceLeft, ceRight). Und jenachdem, welche Bedingung von da oben zutrifft, fügst du das Teil zum Set hinzu (CollisionEdges := CollisionEdges + [ceTop]; ...).
Ich verstehe alles bis auf das.
Ist ja eigentlich logisch

Ich kenne mich mit Sets leider garnicht aus, was passiert denn da, und was bringt mir das?

mfG
Spiderpig
---Zufall ist das Inkognito Gottes---
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#5

Re: [Andorra2D]: Wie bekomme ich raus wo die Kollision statt

  Alt 13. Mai 2008, 08:22
Ein Set ist - wie der Name schon sagt - ein Set von mehreren Zuständen. Die Delphi-Referenz durchsuchenDelphi-Hilfe sollte auch was dazu sagen.
Delphi-Quellcode:
type
  TMeinSet = set of (msIrgendwas, msBlabla, msHallo, msEgal);

var
  MeinSet: TMeinSet;

begin
  MeinSet := []; // leeres Set
  MeinSet := MeinSet + [msBlabla]; // msBlabla hinzufügen
  MeinSet := MeinSet + [msEgal]; // msEgal hinzufügen
  MeinSet := MeinSet - [msBlabla]; // msBlabla entfernen

  if [msBlabla] in MeinSet then
    // ...
  if [msEgal, msHallo] in MeinSet then
    // ...
end;
  Mit Zitat antworten Zitat
Benutzerbild von Spiderpig_GER_15
Spiderpig_GER_15

Registriert seit: 17. Mär 2008
298 Beiträge
 
Delphi 7 Personal
 
#6

Re: [Andorra2D]: Wie bekomme ich raus wo die Kollision statt

  Alt 14. Mai 2008, 22:10
danke,

gut zu wissen was set's sind,
wird noch hilfreich sein!

Dankeschööööhn

Spiderpig
---Zufall ist das Inkognito Gottes---
  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 12:18 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