|
A7 - Sprite-Kollision
#338607
08/19/10 15:21
08/19/10 15:21
|
Joined: Jan 2005
Posts: 605 Deutschland, NRW
garv3
OP
User
|
OP
User
Joined: Jan 2005
Posts: 605
Deutschland, NRW
|
Hallo zusammen,
ich habe ein paar Probleme mit Sprite-Kollisionen. Die Sprites sind beide parallel zur Kamera ausgerichtet. Sie werden per c_move(... USE_POLYGON | IGNORE_PASSABLE | ACTIVATE_PUSH) nach links oder rechts bewegt. Zum Einen funktioniert die Kollisionserkennung nicht wirklich Pixelgenau. Ich hätte gerne, dass transparente Pixel ignoriert werden und bei Berührung zweier sichtbarer Pixel das Kollisionsevent aktiviert wird.
Ein weiteres Problem ist das 'Überrennen'. Beide Entities haben das POLYGON Flag aktiviert. Die eine Sprite-Entity ist der Spieler. Die zweite ein Gegner. Angenommen, sie Bewegen sich beider nach rechts, dann holt der Spieler irgendwann den Gegner ein. Doch das Kollisionsevent wird erst getriggert, wenn der Spieler halb durch den Gegner durchgelaufen ist. Läuft der Gegner in Richtung des Spielers, wird das Event wesentlich früher ausgelöst, wenn auch nicht sofort bei der ersten sichtbaren Berührung. Beide Entities bewegen sich mit den selben Modi per c_move. Die Spieler-Entity enthält kein Event, die Gegner-Entity enthält das auszuführende Event. Der push Wert beider Entities wurde nicht geändert. Eigentlich werden die Events doch bei beiden Entities ausgelöst, unabhängig davon, welche nun mit der anderen kollidiert, oder? Ich habe auch schon EVENT_IMPACT probiert. ACTIVATE_PUSH wird in der c_move-Anweisung immer benutzt. Das ENABLE_PUSH und EVENT_PUSH werden in der Aktion bzw. dem Event des Gegner berücksichtigt!
Hat jemand eine Idee?
Dank und Gruß derGarv
GameStudio Version: A7 Pro v7.86
|
|
|
Re: A7 - Sprite-Kollision
[Re: garv3]
#338610
08/19/10 16:08
08/19/10 16:08
|
Joined: Nov 2008
Posts: 216
jane
Member
|
Member
Joined: Nov 2008
Posts: 216
|
Sprites haben meines Wissens nach nur einen, für die Kollisionserkennung nutzbaren Mittelpunkt. Versuch doch mal bei der c-move |USE_Box statt |POLYGON zu verwenden. Dadurch sollte eine verwertbare Kollisionshülle um die Sprites generiert werden. Wenn die Größe noch nicht stimmt, dann die Kollisionshülle per script manuell anpassen (zu finden im Handbuch unter Kollision & Umgebung, unter dem Punkt Hüllengrösse).
Last edited by jane; 08/19/10 16:11.
|
|
|
Re: A7 - Sprite-Kollision
[Re: jane]
#338612
08/19/10 16:58
08/19/10 16:58
|
Joined: Jan 2005
Posts: 605 Deutschland, NRW
garv3
OP
User
|
OP
User
Joined: Jan 2005
Posts: 605
Deutschland, NRW
|
Oh, das ist wirklich schade! Ich würde sehr gern eine pixelgenaue Kollision realisieren. Ich habe nun mal versucht, über my.min_x usw. die Hüllen anzupassen. Wenn ich sie mir zeichnen Lasse: vec_set(vMin,my.x); vec_add(vMin,my.min_x); vec_set(vMax,my.x); vec_add(vMax,my.max_x); draw_box3d(vMin,vMax,vector(0,0,255),100); dann werden die Hüllen entsprechend der Änderungen angezeigt. Die Kollisionen werden allerdings entsprechend der ursprünglichen hüllen ausgelöst. Wie kann ich denn die Kollisionshülle entsprechend der manuellen Werte aktualisieren?
Dank und Gruß derGarv
GameStudio Version: A7 Pro v7.86
|
|
|
Re: A7 - Sprite-Kollision
[Re: garv3]
#338613
08/19/10 17:08
08/19/10 17:08
|
Joined: Jan 2005
Posts: 605 Deutschland, NRW
garv3
OP
User
|
OP
User
Joined: Jan 2005
Posts: 605
Deutschland, NRW
|
Ich plane momentan, die Methode mit unsichtbaren Kollisionsmodellen zu verfolgen. Ich habe also einige Blocks im Level platziert. Allerdings scheinen diese bei c_move mit IGNORE_PASSABLE ignoriert zu werden. Sie sind aber laut WED nicht passable, sondern nur invisible!
GameStudio Version: A7 Pro v7.86
|
|
|
Re: A7 - Sprite-Kollision
[Re: garv3]
#338682
08/20/10 14:09
08/20/10 14:09
|
Joined: Apr 2008
Posts: 650
Sajeth
User
|
User
Joined: Apr 2008
Posts: 650
|
Invisible wird zu passable, versuchs indem du die Textur auf NONE stellst. Ich denke, für Hüllenänderungen musst du c_updatehull verwenden.
Teleschrott-Fan.
|
|
|
Re: A7 - Sprite-Kollision
[Re: Sajeth]
#338689
08/20/10 14:55
08/20/10 14:55
|
Joined: Jan 2005
Posts: 605 Deutschland, NRW
garv3
OP
User
|
OP
User
Joined: Jan 2005
Posts: 605
Deutschland, NRW
|
Das None-Flag bei der Textur erfüllt seinen Zweck. Super! Allerdings funktioniert die Kollision noch nicht. Mit c_updatehull kann man die Kollisionshülle nur den Ausmaßen eines bestimmten Frames anpassen. Laut Doku müsste es rechen, die min_x... Werte anzupassen. Wenn ich mir die Kollisionshülle mit
vec_set(vMin,my.x); vec_add(vMin,my.min_x); vec_set(vMax,my.x); vec_add(vMax,my.max_x); draw_box3d(vMin,vMax,vector(0,0,255),100);
anzeigen lasse, werden sie wie oben erwähnt ja auch korrekt angezeigt aber das Kollisionsevent wird früher ausgelöst. Hier mal ein Screenshot: Die Kollision zwischen dem Ball und dem Pilz rechts neben ihm wurde in diesem Frame ausgelöst! Ich komme nicht weiter... Hat jemand noch einen Lösungsvorschlag? Danke!!! derGarv
GameStudio Version: A7 Pro v7.86
|
|
|
Re: A7 - Sprite-Kollision
[Re: garv3]
#338693
08/20/10 15:43
08/20/10 15:43
|
Joined: Apr 2008
Posts: 650
Sajeth
User
|
User
Joined: Apr 2008
Posts: 650
|
unsichtbare 3d-Modelle für kollision, bewegung usw und die panels nur auf die jeweilige position setzen.
Teleschrott-Fan.
|
|
|
Re: A7 - Sprite-Kollision
[Re: Sajeth]
#338694
08/20/10 15:45
08/20/10 15:45
|
Joined: Jan 2005
Posts: 605 Deutschland, NRW
garv3
OP
User
|
OP
User
Joined: Jan 2005
Posts: 605
Deutschland, NRW
|
Das wäre natürlich ein Workaround. Aber sehr umständlich!
GameStudio Version: A7 Pro v7.86
|
|
|
Re: A7 - Sprite-Kollision
[Re: garv3]
#338722
08/20/10 22:48
08/20/10 22:48
|
Joined: Nov 2008
Posts: 216
jane
Member
|
Member
Joined: Nov 2008
Posts: 216
|
Warum baust Du die Figuren nicht als flache Modelle und texturierst nur die Front. Wenn die weiteren Figuren-Formen nicht wesentlich komplexer werden sollte das eine Arbeit von zehn Minuten sein. Diese Modelle haben dann auf jeden Fall eine 100%ige Polygonerkennung und Event-Auslösung. etwa so:
Last edited by jane; 08/21/10 02:02.
|
|
|
|