| |||||||
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: Nov 2008
Beiträge: 11
| durchnummerierte Instanznamen ansprechen?
Hallo, ich habe seit längerem ein Problem, und zwar geht es um viele movieclips derselben Art, die alle den gleichen Instanznamen haben, nur durchnummeriert. (symbol1_mc, symbol2_mc etc.) gibt es eine möglichkeit, eine if-abfrage zu schreiben, die prüft, ob einer der anderen gerade einen HitTest hat (sagt man das so ?) ?Es geht um eine Arcanoid-Variante, und der Ball wird umgelenkt, wenn er einen Stein trifft. Wenn er aber zwei gleichzeitig trifft, wird seine Flugbahn zwei mal *-1 genommen, was dann wieder zu der ursprünglichen Flugbahn führt, und dann geht er einfach durch die steine durch, fliegt also weiter, ohne umgelenkt zu werden. Das wollte ich dann eben so lösen, aber wenn das nicht geht, oder jemand einen eleganteren Lösungsvorschlag hat - immer her damit ![]() Angela Geändert von AngelaN (18-11-2008 um 19:56 Uhr) |
| | |
| | #2 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
kollisionstest ist ein schon oft diskutiertes thema. bitte dazu auch mal die suche benützen. mc-namen sind sehr langsam, weil diese immer wieder gesucht werden müssen. verwende die zeiger auf deine mc's. die kannst du in arrays sammeln. hitTest die beschreibung aller befehle steht in der flash-hilfe. hitTest prüft nur einen punkt. für komplexere gebilde als kreise muss man sich jeweils was passendes einfallen lassen. hindurch wenn sich deine objekte jeweils sehr weit bewegen und du relativ dünne hindernisse hast, dann musst du die schnittpunkte berechnen. was bei den rechtecken von "Breakout" wohl keine all zu grosse herausforderung sein sollte? übrigens: einfallswinkel == ausfallswinkel man kann nicht 2 steine treffen und der ball fliegt dann in der selben richtung weiter. zu richtung *= -1 gehört ein frontalaufprall und das geht nicht mit 2 steinen gleichzeitig. und such auch mal nach: rigidbody http://www.seibsprogrammladen.de/fra...ispiele/flash6 ZIP -> ballaballa Kollisionserkennung: Viele Bälle in Kollision plus Stoppbälle. http://www.seibsprogrammladen.de/fra.../Schnittpunkte http://www.seibsprogrammladen.de/fra.../Spiel/Engines PinLines-Engine nach einem aufprall gilt: einfallswinkel == ausfallswinkel danach fliegt der ball mit der restenergie in die neue richtung, in die wieder ein schnittpunkt gesucht werden muss. und das so lange wiederholen, bis die restenergie aufgezehrt ist.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (19-11-2008 um 01:16 Uhr) |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Nov 2008
Beiträge: 11
|
Hallo, danke schonmal soweit, nur eine kleine Anmerkung: Das mit dem Ein- und Ausfallswinkel ist mir klar, und vielleicht habe ich mich auch zu ungenau ausgedrückt - wenn der ball von oben kommt und einen Stein trifft, bleibt seine Geschwindigkeit in x-Richtung gleich, nur die y-Geschwindigkeit wird mal -1 genommen, sodass er halt wieder nach oben fliegt. Dadurch hat man das mit dem Ausfallswinkel. Wenn er jetzt in der Mitte zwischen zwei benachbarten Steinen auftrifft, dann wird diese y-Geschwindigkeit 2x mal -1 genommen - also wieder genau wie vorher auch und er geht mittendurch. Angela |
| | |
| | #4 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
vielleicht gibst du mal etwas von deiner fla preis, oder ein bild: welche situation hast du? ein ball (i.d.R. rund) zwischen zwei steinen (i.d.R. rechteckig) und der ball trifft beide? dann muss der raum zwischen den steinen kleiner als der balldurchmesser sein. entweder die steine berühren sich und du triffst exakt diese berührungsstelle - extrem unwarscheinlich. oder es gibt eine fuge, dann ist der abprallwinkel nicht das lot, sondern es gibt zwei richtungen, die vektormässig addiert werden müssen. die einfache variante (physikalisch nicht korrekt, aber bitte, es ist ja nur ein spiel) die erste gefundene kollision zählt. damit wird der ball sofort bewegt und kann garnicht mehr gleichzeitig den anderen stein getroffen haben. die aufwendigere variante: du musst alle kollisionen berechnen, die gesamtenergie des balles entsprechend teilen, und die resultierenden kräfte vektormässig addieren (geht in richtung rigidbody).
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (19-11-2008 um 12:34 Uhr) |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| arcanoid, durchnummeriert, hittest, if-abfrage, instanznamen |
| Themen-Optionen | |
| Ansicht | |
| |