Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 30-01-2003, 17:34   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Ort: Augsburg
Beiträge: 27
** Collision Detection **

Folks,

baue gerade eine collision detection für ein Spiel in dem sich auf der Bühne mind. 15 Objekte gegenseitig abfragen sollen, ob sie sich berühren.
Dabei gehe ich mit einem Array alle Objekte durch...

Das Problem ist nur, dass der Film so wahnsinnig langsam wird.
Kennt da jemand eine bessere Idee?

Danke,
paul
powl ist offline   Mit Zitat antworten
Alt 30-01-2003, 17:50   #2 (permalink)
Hirnverbrannt
 
Benutzerbild von NastyFrog
 
Registriert seit: Aug 2001
Ort: AUSTRIA
Beiträge: 2.020
Hmm, naja. Ich würd das Ganze von einem Extra Abfrage MC machen lassen, und einfach möglichst viel optimieren. Bereits abgefragte MCs z.B. auslassen etc.
__________________
50 Seiten hardcore ActionScript von den Grundlagen bis zu 3D Darstellungen.... eben eine Abendlektüre.

Dogs fucked the Pope, no fault of mine. Watch out! ... Why money? My name is Brinks; I was born ... born? Get sheep over side ... women and children to armored car ... orders from Captain Zeep.(Hunter S. Thompson)
NastyFrog ist offline   Mit Zitat antworten
Alt 30-01-2003, 19:00   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Ort: Hessen
Beiträge: 182
ja mit mathe kannst du sehr viel optimieren

eine sache ist zum beispiel ob du objekte hast die eh nicht miteinander kollidieren können (2 schüsse aus einer waffe oder so) dazu gibst du jedem mc am besten eine variable die den typ des objektes definiert (schiff, gegner, schuss etc.)
bevor du die kollision abfragst kannst du so vorher schon sicherstellen das ausgerechnet wird ob 2 objekte kollidieren bei denen es eh egal ist.

weiterhin kannst du eine einfache methode benutzen um die aufwendige kollisionsabfrage für objekte die zu weit auseinander sind zu umgehen:
jedes objekt bekommt den radius eines kreises zugewiesen der das objekt komplett einschliesst. wenn die distanz zwischen den beiden objekten grösser als die summe der beiden radien ist können sie nicht miteinander kollidieren.

diese methoden benutze ich auch in der spieleprogrammierung, allerdings unter C++ mit Direct3D, ich weiss nicht wie gut flash mit der distanzrecchnung klar kommt:
d=sqrt(pow(x1-x2)+pow(y1-y2))

viel glueck damit

gruss
gw
GeeWee ist offline   Mit Zitat antworten
Alt 30-01-2003, 19:02   #4 (permalink)
::flash5user::
 
Benutzerbild von Heidsch
 
Registriert seit: Aug 2001
Ort: Berlin
Beiträge: 497
vielleicht hilft der dieser thread auch:

guckst du >>>>
__________________
mfg :::heidsch:::

visit heidsch.de
visit oprspedition.de
visit megalogistik.de

letzter Besuch 15.07.2006 | Finde leider kaum noch Zeit zum flashen
Heidsch ist offline   Mit Zitat antworten
Alt 30-01-2003, 19:40   #5 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Ort: Augsburg
Beiträge: 27
Das nenn ich Hilfe

Jungs, danke.
das nenn ich ne konkrete Hilfe.
Die Methode von secp ist allerdings auch nicht schlecht.
Damit kann man arbeiten.

Cheers,
powl
powl ist offline   Mit Zitat antworten
Alt 30-01-2003, 19:56   #6 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Ort: Hessen
Beiträge: 182
wichtig ist noch was NastyFrog schon gesagt hat, möglichst nicht doppelt abfragen!
wenn du die methode von secp nimmst z.B. werden in etwa 2.3x so viele abfragen gemacht wie nötig!
ein trick bei einer vollen abfrage (wenn alles mit allem kollidieren kann) ist einfach das letzte element auszulassen aus der schleife (es wurde vorher eh schon abgefragt durch alle anderen elemente) das sind bei 8 objekten schon 8 (oder nur 7 je nach dem) abfragen!!

es ist zudem noch sinnvoll deine objekte in gruppen aufzuteilen die du dann mit je einer gesonderten schleife behandelst.
wenn du z.B. ein objekt hast was mit ALLEM kollidieren kann (das raumschiff des players oder was auch immer), solltest du dieses gesondert behandeln.

genauso solltest du objekte die untereinander nicht kollidieren aber in grosser menge vorhanden sind in eine seperate gruppen stecken.

und zuletzt solltest du eine eigenkollision vermeiden

gruss
gw
GeeWee ist offline   Mit Zitat antworten
Alt 31-01-2003, 10:26   #7 (permalink)
[Matthias K.] - Moderator
 
Benutzerbild von Madokan
 
Registriert seit: Jun 2001
Ort: Berlin/Germany - and the hole World !
Beiträge: 9.971
GeeWee mit dem Pythagoras kommt er immer gut klar.

Liebe Grüsse
Matze K.
Madokan ist offline   Mit Zitat antworten
Alt 31-01-2003, 11:33   #8 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Ort: Hessen
Beiträge: 182
echt? fett, gut zu wissen.
dann sollte das deine kollisionserkennung merklich beschleunigen wenn du mal ein paar mehr objekte auff der bühne hast
GeeWee ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele