Gamestudio Links
Zorro Links
Newest Posts
Data from CSV not parsed correctly
by EternallyCurious. 04/18/24 10:45
StartWeek not working as it should
by Zheka. 04/18/24 10:11
folder management functions
by VoroneTZ. 04/17/24 06:52
lookback setting performance issue
by 7th_zorro. 04/16/24 03:08
zorro 64bit command line support
by 7th_zorro. 04/15/24 09:36
Zorro FIX plugin - Experimental
by flink. 04/14/24 07:48
Zorro FIX plugin - Experimental
by flink. 04/14/24 07:46
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
1 registered members (SBGuy), 712 guests, and 3 spiders.
Key: Admin, Global Mod, Mod
Newest Members
EternallyCurious, howardR, 11honza11, ccorrea, sakolin
19047 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 1 of 2 1 2
A7 - Sprite-Kollision #338607
08/19/10 15:21
08/19/10 15:21
Joined: Jan 2005
Posts: 605
Deutschland, NRW
G
garv3 Offline OP
User
garv3  Offline OP
User
G

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
J
jane Offline
Member
jane  Offline
Member
J

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] #338611
08/19/10 16:34
08/19/10 16:34
Joined: Feb 2009
Posts: 2,154
Damocles_ Offline
Expert
Damocles_  Offline
Expert

Joined: Feb 2009
Posts: 2,154
Its ja auch keine dedizierte 2d Engine,
also pixelgenaue Kollisionsprüfung wäre da auch nicht
unbedingt zu erwarten.

Du könntest unsichtbare Kollisionsmodelle erstellen, die
ungefähr die Form der Figur im sprite abbilden.
Oder Du nimmst unsichtbare "subsprites" um die Kollisionshülle aus kleineren rechtecken aufzubauen.

Oder Du mußt dir halt eine eigene Kollisionsfunktion
schreiben (mittels arrays, die die transparenten beraich beschreiben.)

Re: A7 - Sprite-Kollision [Re: jane] #338612
08/19/10 16:58
08/19/10 16:58
Joined: Jan 2005
Posts: 605
Deutschland, NRW
G
garv3 Offline OP
User
garv3  Offline OP
User
G

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
G
garv3 Offline OP
User
garv3  Offline OP
User
G

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 Offline
User
Sajeth  Offline
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
G
garv3 Offline OP
User
garv3  Offline OP
User
G

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
Code:
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 Offline
User
Sajeth  Offline
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
G
garv3 Offline OP
User
garv3  Offline OP
User
G

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
J
jane Offline
Member
jane  Offline
Member
J

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.
Page 1 of 2 1 2

Moderated by  HeelX, Spirit 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1