JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=454788a243e339cabb856ac68c58087eMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Begrenzungen für Objekte erstellen

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Grafik und Sound
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Mäscht
JLI'ler



Anmeldedatum: 22.05.2003
Beiträge: 150
Wohnort: Bad Hofgastein\Österreich
Medaillen: Keine

BeitragVerfasst am: 02.06.2003, 10:09    Titel: Begrenzungen für Objekte erstellen Antworten mit Zitat

Ich möchte zB: folgendes machen: Ich habe einen Sprite, der durch ein 2D Zimmer gehen soll. Im Zimmer sind verschiedene Möbel usw.
Wie kann ich es nun machen, dass der Sprite vor einem Kasten (oder sowas) stehenbleibt. Muss ich für jedes Objekt Begrenzungen definieren wie zum Beispiel beim Bildschirmrand! Gibt es da nicht irgendeine Funktion, mit der ich bestimmte Bildschirmbereiche sperren kann, damit der Sprite nicht weitergehen kann??
_________________
Motz´z mi net o, i bin ofänga!! AEIOU für immer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 02.06.2003, 10:33    Titel: Antworten mit Zitat

Soetwas gehört in die Kategorie "Programmlogik" und muß von dir selbst programmiert werden.
Eine Kollisionsabfrage auf Basis von Kollisionsrechtecken und Kreisen ist hier sehr zu empfehlen.

AFE-GmdG
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 02.06.2003, 11:16    Titel: Antworten mit Zitat

Das geht wirklich einfach zu machen. Ich hab mir dafür ne Kollision-Funktion geschrieben. Da muss man nur noch die Koordinaten und die Höhe und Breite der Beiden Gegenstände angeben und schon gibt die Funktion TRUE oder FALSE zurück.
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 02.06.2003, 12:12    Titel: Antworten mit Zitat

Falls du nicht weißt, wie das geht:

Code:

if( ( x1 > x2 + width2 - 1 ) || ( x2 > x1 + width1 -1 ) ||
    ( y1 > y2 + height2 - 1 ) || ( y2 > y1 + height2 -1 ) )
{
    // Keine Kollision
}
else
{
    // Kollision
}


Jedes Objekt hat dabei ein Koordinatenpaar, eine Breite und eine Höhe.

[EDIT]
Es muss || anstatt && sein.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mäscht
JLI'ler



Anmeldedatum: 22.05.2003
Beiträge: 150
Wohnort: Bad Hofgastein\Österreich
Medaillen: Keine

BeitragVerfasst am: 04.06.2003, 07:15    Titel: Antworten mit Zitat

Ok! Danke! Jetzt muss ich wenigstens nicht sinnlos im msdn nachsuchen!
_________________
Motz´z mi net o, i bin ofänga!! AEIOU für immer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 04.06.2003, 09:18    Titel: Antworten mit Zitat

Auch wenn in der MSDN schon so einiges steht, wie man ein Programm schreibt steht nicht drin, solange es sich um reine Programmlogik handelt.
Es gibt zwar hin und wieder Beispielausschnitte, aber die verlangen immer noch nacharbeit.
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mäscht
JLI'ler



Anmeldedatum: 22.05.2003
Beiträge: 150
Wohnort: Bad Hofgastein\Österreich
Medaillen: Keine

BeitragVerfasst am: 04.06.2003, 10:50    Titel: Antworten mit Zitat

Wie geht das: Eine Kollisionsabfrage auf Rechtecken und Kreisen basierend??
_________________
Motz´z mi net o, i bin ofänga!! AEIOU für immer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Ranma
JLI'ler



Anmeldedatum: 10.12.2002
Beiträge: 167
Wohnort: Cadolzburg
Medaillen: Keine

BeitragVerfasst am: 04.06.2003, 11:16    Titel: Antworten mit Zitat

eine Kollsionsabfrage auf Rechtecken gibts im ersten Buch im Kap22 und im
2.Buch Kap25 glaub ich jedenfalls,
wenn du keins von Beiden hast, schreib, dann können wir dir das auch hier erklären
Wink
_________________
"Deutsche Sprache schwere Sprache"
sprach der C++er
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mäscht
JLI'ler



Anmeldedatum: 22.05.2003
Beiträge: 150
Wohnort: Bad Hofgastein\Österreich
Medaillen: Keine

BeitragVerfasst am: 05.06.2003, 11:50    Titel: Antworten mit Zitat

Bitte erklären! Nix haben Buch!
_________________
Motz´z mi net o, i bin ofänga!! AEIOU für immer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 05.06.2003, 12:09    Titel: Antworten mit Zitat

Mäscht: Das mit Rechtecken habe ich dir doch oben gezeigt!
Mit Kreisen geht das so: Du berechnest den Abstand zwischen den Mittelpunkten und wenn dieser kleinergleich der Summe der beiden Radien ist, gibt es eine Kollision.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mäscht
JLI'ler



Anmeldedatum: 22.05.2003
Beiträge: 150
Wohnort: Bad Hofgastein\Österreich
Medaillen: Keine

BeitragVerfasst am: 05.06.2003, 12:12    Titel: Antworten mit Zitat

Achso! Muss ich ein rechteck nicht so definieren:

Code:

RECT rect;

rect.left = 545;
rect.right = 45645;
rect.top = 454
rect.bottom = 445


oder hast du anstatt den x1,x2,usw die koordinaten der rechtecke gemeint??
_________________
Motz´z mi net o, i bin ofänga!! AEIOU für immer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 05.06.2003, 12:13    Titel: Antworten mit Zitat

Ich habs so gemacht:
Code:
bool Kollision(int X1, int Y1, int Breite1, int Hoehe1, int X2, int Y2, int Breite2, int Hoehe2)
{
    //Wenn die rechte Begrenzung innerhalb des Rechtecks1 ist
    if(X2+Breite2>X1 &&
    //und die linke Begr. innerhalb d. Rechtecks1 ist
   X2<X1+Breite1 &&
   //und die untere Begr. innerhalb des Rechtecks1 ist
   Y2+Hoehe2>X1 &&
   //und die obere Begr. innerhalb d. Rechtecks1 ist
   Y2<Y1+Hoehe1)
   //Kollision tritt ein
   return true;
   //Sonst keine Kollision
   else return false;
}

_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mäscht
JLI'ler



Anmeldedatum: 22.05.2003
Beiträge: 150
Wohnort: Bad Hofgastein\Österreich
Medaillen: Keine

BeitragVerfasst am: 05.06.2003, 12:16    Titel: Antworten mit Zitat

Danke!
_________________
Motz´z mi net o, i bin ofänga!! AEIOU für immer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 05.06.2003, 12:17    Titel: Antworten mit Zitat

gern geschehen
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 05.06.2003, 12:37    Titel: Antworten mit Zitat

Mäscht hat Folgendes geschrieben:
Achso! Muss ich ein rechteck nicht so definieren:

Code:

RECT rect;

rect.left = 545;
rect.right = 45645;
rect.top = 454
rect.bottom = 445


oder hast du anstatt den x1,x2,usw die koordinaten der rechtecke gemeint??


Muss? Nein. Ich hab es so gemacht wie Lord of Programming. Er benutzt sogar die gleiche Methode wie ich, nur umgekehrt.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Grafik und Sound Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum