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
|
Verfasst am: 02.06.2003, 10:09 Titel: Begrenzungen für Objekte erstellen |
|
|
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 |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 02.06.2003, 10:33 Titel: |
|
|
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 |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 02.06.2003, 11:16 Titel: |
|
|
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 |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 02.06.2003, 12:12 Titel: |
|
|
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 |
|
|
Mäscht JLI'ler
Anmeldedatum: 22.05.2003 Beiträge: 150 Wohnort: Bad Hofgastein\Österreich Medaillen: Keine
|
Verfasst am: 04.06.2003, 07:15 Titel: |
|
|
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 |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 04.06.2003, 09:18 Titel: |
|
|
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 |
|
|
Mäscht JLI'ler
Anmeldedatum: 22.05.2003 Beiträge: 150 Wohnort: Bad Hofgastein\Österreich Medaillen: Keine
|
Verfasst am: 04.06.2003, 10:50 Titel: |
|
|
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 |
|
|
Ranma JLI'ler
Anmeldedatum: 10.12.2002 Beiträge: 167 Wohnort: Cadolzburg Medaillen: Keine
|
Verfasst am: 04.06.2003, 11:16 Titel: |
|
|
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
_________________ "Deutsche Sprache schwere Sprache"
sprach der C++er |
|
Nach oben |
|
|
Mäscht JLI'ler
Anmeldedatum: 22.05.2003 Beiträge: 150 Wohnort: Bad Hofgastein\Österreich Medaillen: Keine
|
Verfasst am: 05.06.2003, 11:50 Titel: |
|
|
Bitte erklären! Nix haben Buch! _________________ Motz´z mi net o, i bin ofänga!! AEIOU für immer |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 05.06.2003, 12:09 Titel: |
|
|
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 |
|
|
Mäscht JLI'ler
Anmeldedatum: 22.05.2003 Beiträge: 150 Wohnort: Bad Hofgastein\Österreich Medaillen: Keine
|
Verfasst am: 05.06.2003, 12:12 Titel: |
|
|
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 |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 05.06.2003, 12:13 Titel: |
|
|
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 |
|
|
Mäscht JLI'ler
Anmeldedatum: 22.05.2003 Beiträge: 150 Wohnort: Bad Hofgastein\Österreich Medaillen: Keine
|
Verfasst am: 05.06.2003, 12:16 Titel: |
|
|
Danke! _________________ Motz´z mi net o, i bin ofänga!! AEIOU für immer |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 05.06.2003, 12:37 Titel: |
|
|
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 |
|
|
|