Zurück   Flashforum > Flash > ActionScript > ActionScript 2

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 18-11-2008, 19:48   #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)
AngelaN ist offline   Mit Zitat antworten
Alt 19-11-2008, 01:04   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
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)
hgseib ist offline   Mit Zitat antworten
Alt 19-11-2008, 05:42   #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
AngelaN ist offline   Mit Zitat antworten
Alt 19-11-2008, 12:31   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
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)
hgseib ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
arcanoid, durchnummeriert, hittest, if-abfrage, instanznamen

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 15:47 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele