Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-08-2007, 13:07   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Beiträge: 24
kleine frage zu hittest

ich weis das es schon unzählig viele Threads dazu gibt...konnte aber mithilfe der Suche und lesen einiger Threads mein Problem nicht lösen;

zwar hab ich eine begrenzende wand(wall) und ein rechteck(player)...
mithilfe von hittest registriere ich die Kollision von player mit wall wie folgt:
PHP-Code:
if(_root.wall.hitTest(_root.player._x_root.player._ytrue)){trace("boom")} 
funktioniert auch alles soweit, aber jetzt zu meinem problem:
die Kollision wird nur mit der XY-Koordinate des MC player ermittelt...sprich das Rechteck(player) dringt soweit in die Wand ein bis die XY-Koordinate von player die wand erreicht;

hab mir gedacht ich taste jetzt jeden einzelnen Pixel von player mit einer Schleife ab:
PHP-Code:
for(i=0;_root.player._width;i++){
    for(
j=0;_root.player._height;j++){
        if(
_root.wall.hitTest(_root.player._x+i_root.player._y+jtrue)){trace("boom");}
        }
    } 
aber wie ich schon erwartet habe ist diese Variante sehr rechenaufwendig;
bitte daher um eine bessere Variante;
im Voraus danke für eure Hilfe und verteil noch ein fettes lob an dieses Forum und allen die hilfsbereit und schnell Leuten wie mir helfen;
triger23 ist offline   Mit Zitat antworten
Alt 07-08-2007, 13:11   #2 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
Welche Form hat Dein Player?
Wenn die Grundform wie bei einem Tile-Based-Game
auf einem Quadrat oder Rechteck basiert, kannst Du
einfach die vier Eckpunkte der Form testen.

gruß, gaspode
gaspode ist offline   Mit Zitat antworten
Alt 07-08-2007, 13:17   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Beiträge: 24
Hatte ich oben schon geschrieben...es ist ein Rechteck...

Hab aber gerade mitbekommen das meine Schleifen ins unendliche liefen;
Hab es jetzt korrigiert:
PHP-Code:
for(i=0;i<=_root.player._width;i++){
    for(
j=0;j<=_root.player._height;j++){
        if(
_root.wall.hitTest(_root.player._x+i_root.player._y+jtrue)){trace("boom");}
    }


geht auch schon besser...aber ist mir noch nicht ganz das wahre…und nein es ist nicht wie bei einem Tile-Based-Game aufgebaut;
triger23 ist offline   Mit Zitat antworten
Alt 07-08-2007, 13:19   #4 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
Hast Du mal einen Screenshot von Player/Wall,
damit man sich das vorstellen kann?

gruß, gaspode
gaspode ist offline   Mit Zitat antworten
Alt 07-08-2007, 13:25   #5 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Beiträge: 24
download

Aber hast recht ich könnte das abtasten der einzelnen Flächenpunkte vergröbern...ok das wird reichen einen großen dank für deinen Gedankenanstoß;

bin aber weiterhin offen für weitere lösungen;

gruß
triger23 ist offline   Mit Zitat antworten
Alt 07-08-2007, 14:01   #6 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
Das könnte dann so aussehen:

PHP-Code:
function Kolisionen(){
    switch(
true) {
        case(
_root.wall.hitTest(_root.player._x_root.player._ytrue)):
            
trace("top left boom");
            break;
        case(
_root.wall.hitTest(_root.player._x _root.player._width_root.player._ytrue)):
            
trace("top right boom");
            break;
        case(
_root.wall.hitTest(_root.player._x_root.player._y _root.player._heighttrue)):
            
trace("bottom left boom");
            break;
        case(
_root.wall.hitTest(_root.player._x _root.player._width_root.player._y _root.player._heighttrue)):
            
trace("bottom right boom");
            break;
    }

gruß, gaspode
gaspode ist offline   Mit Zitat antworten
Alt 07-08-2007, 14:08   #7 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Beiträge: 24
jau das hätt ich noch zusammen bekommen...aber werd mal deine Variante mit dem Case versuchen..bringt das irgendwelche Vorteile gegenüber den ifthen Klauseln...aber danke für deine große Mühe..

Geändert von triger23 (07-08-2007 um 14:14 Uhr)
triger23 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

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 18:30 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele