| |||||||
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 2009
Beiträge: 47
| Kollision
Hallo, ich weiß, es gibt verschiedene Tuts und Forumsbeiträge zum Thema Kollisionen. Aber irgendwie komme ich nicht weiter. Ich habe drei Objekte (Ball, Wand und Stern) Ball rollt wunderbar Ball rollt gegen Stern - Aktion funktioniert Ball rollt gegen Wand - und springt zurück auf die Startposition Soweit so gut. Habe ich jetzt eine aufwändigere Wand (sagen wir ein Labyrinth), erhalte ich beim hitTest bereits eine Aktion, wenn ich den imaginären Außenrand des Labyrinth-MC berühre. Code: ball.addEventListener(Event.ENTER_FRAME, moveBall);
function moveBall(evt:Event)
{
ball.x -= accelX * 30;
ball.y += accelY * 30;
//hittest
if (ball.hitTestObject(wand))
{
// aktion zurück zum start
ball.x = 10;
ball.y = 10;
}
if (ball.hitTestObject(stern))
{
stern.x = -100;
}
} Danke für jede Hilfe! Greets, MIKE |
| | |
| | #2 (permalink) |
| Klugscheisser Registriert seit: Jun 2001 Ort: Düsseldorf
Beiträge: 1.354
|
Wenn dein Ball eine feste Größe und Form hat, könntest Du Dir doch ein paar Eckpunkte (ein Ball hat davon immerhin unendlich viele) in ein Array (oder einen Vector.<Point>) notieren. In deiner Abfragefunktion rechnest Du dann jeden Punkt mit der aktuellen Mausposition zusammen und macht auf das Labyrinth jeweils einen hitTestPoint mit angeschaltetem Shape Flag. Geändert von T.Decay (18-10-2011 um 17:44 Uhr) |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Nov 2009
Beiträge: 47
|
Hi, danke für deine Nachricht. Es gibt keine Mausposition, da der Ball über den Beschleunigungssensor auf einem Pad gesteuert wird. Gibt es keine andere Methode, um die 'durchsichtigen' Teiel eines mc zu erkennen? MIKE |
| | |
| | #4 (permalink) |
| Keine Panik Registriert seit: Apr 2010 Ort: Düsseldorf (im ernst)
Beiträge: 1.866
|
das performanteste wäre das Labyrinth als Liste von Linien zu definieren, dann ginge es nur um eine Punkt-Linie-Abstands Berechnung. und wenn die Wände dann nur senkrecht oder wagerecht stehen wird die Mathematik dahinter richtig simpel. wenn du weiter mit Grafiken arbeitest: isch hab da mal wat vorbereitet |
| | |
| | #5 (permalink) |
| Klugscheisser Registriert seit: Jun 2001 Ort: Düsseldorf
Beiträge: 1.354
| Na halt die Position des MC. ![]() Den Shape Flag gibt es nur für hitTestPoint, also kannst Du nur Punkte hitTesten. Ansonsten könntest Du noch den Ball in eine BitmapData zeichnen, das vom Ball überlagerte Rechteck des Labyrinths in eine Andere und dann für jede Pixelposition die Transparenz des entsprechendes Pixels auf beiden BitmapDatas checken. D. h. wenn auf keiner BitmapData transparent, dann hit. Aber ich vermute mal ins Blaue hinein, dass das mehr Performance kostet. |
| | |
| | #6 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
variante 1: bei geringen geschwindigkeiten ist hitTestObject benutzbar. das testet, ob der nullpunkt des einen objektes in der kontur des anderen objektes ist. wird zu selten getestet, gleichbedeutend die bewegung geht zu weit, dann besteht die gefahr, dass die wand unbemerkt übersprungen wird. weiterer nachteil, es ist nicht bekannt, wie weit in das hindernis eingedrungen wird. erzeuge ein zusätzliches labyrinth, dessen mauern um den radius dicker sind. das nicht zum anzeigen, sondern nur zum hittesten benützen. variante 2: selbes vorgehen: die dicke des balls auf die hindernisse übertragen. dadurch reduziert sich der ball auf einen punkt. jetzt müssen die schnittpunkte berechnet werden. siehe: H.G.Seib -> DragImRaum (ZIP laden) viele Rechtecke und Kreise ohne Überlagerung bewegen und H.G.Seib
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| hittest, kollision |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Kollision / 2 swf's | mb-flash | Flash MX | 3 | 13-08-2004 12:54 |
| Kollision | dreck | ActionScript 1 | 4 | 23-04-2004 11:38 |
| Kollision | Edgar | Flash 4 und Flash 5 | 1 | 18-10-2002 18:06 |
| kollision | superheftig | Flash 4 und Flash 5 | 2 | 26-04-2002 10:24 |
| Kollision | Ken | ActionScript 1 | 4 | 20-07-2001 15:57 |