| |||||||
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) |
| Sightgiver Registriert seit: Aug 2001
Beiträge: 368
| Kollision mit anderen MCs generell
HI! Gibt es eine möglichkeit einen generellen HitTest mit MovieClips zu machen. Sprich egal mit welchem anderen MC auf der Bühne ein bestimmter MC kollidiert, es soll was passieren. Oder ist es einfacher z.B. über eine schleife abzufragen ob er mit MCs kollidiert, in dem ich den anderen MCs z.B. allen einen namen mit mc_ gebe und auf den string im _name überprüfe? Gruss Arator
__________________ The issue is not whether you are paranoid. The issue is whether you are paranoid enough. |
| | |
| | #2 (permalink) |
| Neuer User Registriert seit: Mar 2006
Beiträge: 28
| Kollisionsabfrage im Grid
Hallo, grundsätzlich muß man alle MC-Paare, zwischen denen etwas geschehen können soll, auch abfragen. Meistens macht man das über eine Schleife: Code: var anzahl:Nmber;
for(i = 0; i < anzahl - 1; i++) {
for(j = i + 1; j < anzahl; j++) {
objekt1 = this["mc" + i];
objekt2 = this["mc" + j];
// -- ABFRAGE --
}
} Du kannst aber ein Grid aufbauen, also ein gedachtes Raster auf der Bühne. Jedes MC "weiß" dann, in welchem Feld es steckt. Und nur, wenn ein anderes MC ihm nahe ist, wird abgefragt. Ich habe so etwas in ein Tutorial gegossen, eine kommentierte FLA-Datei. Du findest sie auf meiner HP www.dazine.de unter dem Menüpunkt Flash. Viel Erfolg Dirk |
| | |
| | #3 (permalink) |
| Flash and chips. Registriert seit: Jun 2001 Ort: Graz
Beiträge: 531
|
@double-stroke: ist dir bei deinem grid-fla aufgefallen, dass die dinger mit der zeit immer schneller werden? hab's zufällig 5 minuten im hintergrund offen gelassen, da geht dann schon ziemlich die post ab... is aber auch unwichtig. sehr schöne demo!also ich hab mal ein jump'n'run geschrieben, wo ich recht brutal onEnterFrame alle objekte abgefragt hab - performance-probleme gab das keine. dachte auch an workarounds wie vorher überprüfen, welche objekte sowieso zu weit weg sind, um kollidieren zu können - aber mit bruteForce lief es echt am besten. und das war sogar noch auf einem alten 400MHz-kübel... also irgendwie so: Code: this.MAIN_MC.onEnterFrame = function()
{
var x = this;
var y = _root; //bzw wo die zu checkenden mc liegen
for(var i in y)
{
if (typeof y[i]=="movieclip" && y[i]!=x && y[i]!=y)
{
if(x.hitTest(y[i]))
{
trace("HIT: "+y[i]);
}
}
}
}
__________________ The map is NOT the territory. Geändert von Zett (18-10-2006 um 13:56 Uhr) |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Mar 2006
Beiträge: 28
| Schneller werdende Bälle und brutForce();
Hi, danke für den Hinweis mit den schneller werdenden Bällen. Das kommt daher, daß beim Abprallen vom Rand ihre Position korrigiert wird, aber der Geschwindigkeitsvektor nicht. Der müßte nämlich beim Frame nach der Randkollision einmalig herabgesetzt werden, und zwar um den Betrag, den die Versetzung dem Ball "gestohlen" hat. Da aber in den meisten Fällen Reibungs- und Prallverluste die Bewegung recht schnell dämpfen, spielt dieser Fehler keine Rolle. Auf solche Verluste habe ich im Tut aber verzichtet, um das Wesentliche herauszuarbeiten. Aber danke für den Hinweis. brutForce(); (so einen Befehl sollte es geben, finde ich) ist tatsächlich möglich, solange innerhalb dieser Abfrage nur einfache Funktionen ablaufen. Beim Billard, das ich gemacht habe, laufen mehrere solcher Schleifen ab. Aber in der Schleife, die die Kollisionen abfragt, sind einfach zu viele mathematische Funktionen drin, also das Grid. Als ich dann Schrägen an den Banden, wo es zu den Löchern geht, dazuprogrammiert habe, wurden sie unentbehrlich. So, das wars. Bis bald Dirk |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |