| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #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 |
| | |
| | #2 (permalink) |
| Hirnverbrannt 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) |
| | |
| | #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 |
| | |
| | #4 (permalink) |
| ::flash5user:: Registriert seit: Aug 2001 Ort: Berlin
Beiträge: 497
| vielleicht hilft der dieser thread auch:
__________________ mfg :::heidsch::: visit heidsch.de visit oprspedition.de visit megalogistik.de letzter Besuch 15.07.2006 | Finde leider kaum noch Zeit zum flashen |
| | |
| | #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 |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |