2011-01-14 10 views
0

Ich habe zwei kreisförmige Objekte. Ich versuche es zu erkennen, sobald sich die Kreise berühren. Die Spur erkennt eine Kollision, wenn ein Kreis die Mitte der anderen erreicht, aber ich möchte, dass die Kollision erkannt wird, sobald sich die Kreise berühren.Flash Actionscript + Kollision an Kanten erkennen

Meine zwei Symbole sind coin_mc und mugbounds_mc.

function checkHitArea(evt:Event) 
{ 

if (coin_mc.hitTestPoint(mugbounds_mc.x,mugbounds_mc.y, true)) { 
    coin_mc.x=-1; 
    coin_mc.y=-1; 

       trace("Hit Mug"); // Is triggered when coin_mc reaches center of mugbounds_mc 
     } 
     else 
     { 
       trace("Didn't Hit Mug"); 
     } 
} 
+0

Sie könnten die Pythagoräische Formel für die Entfernung zwischen zwei Punkten verwenden und wenn sie kleiner als die Summe der Radien Ihrer beiden Objekte ist, müssen sie kollidieren. Sieh dir das an: http://gamedev.michaeljameswilliams.com/2009/05/08/pythagorean-distance-between-two-points/ –

+0

hey, wenn du deinen Code hier eingibst, wähle danach alles aus und klicke oben auf den kleinen Code-Button Die Textarea, um es richtig formatieren ... im Allgemeinen denke, dass Sie suchen, ist dies: http://help.adobe.com/de_DE/AS2LCR/Flash_10.0/help.html?content=00001314.html – shaunhusain

Antwort

1

Try this:

addEventListener(Event.ENTER_FRAME, checkHitArea) 

function checkHitArea(e:Event) 
{ 
    a.x += 2; 
    if (a.hitTestPoint(b.x,b.y, false)) 
    { 
     // do our in-circle check 
     if((a.x - b.x) * 2 + (a.y - b.y) * 2 <= (a.width/2 + b.width/2) * 2) 
     { 
      trace("hit"); 
     } 
    } 
    else 
    { 
     trace("Didn't Hit Mug"); 
    } 
} 

ich Ihre Filmclips a und b umbenannt.

+0

Vielen Dank ! :) Die Kollisionserkennung funktioniert großartig, aber wie halte ich "a" vom Bewegen ab? Ich brauche es, um still zu bleiben und als Barriere zu fungieren. – Casey

+0

NM hat es :) entfernt a.x + = 2 ;. Nun, da die Kollision erkannt wird, wie höre ich auf mit b zu gehen? Ich dachte, es wäre so etwas wie a.x = -1; a.y = -1; um 1 Pixel in beide Richtungen zurück zu bewegen, wenn ein Treffer auftritt. Offensichtlich liege ich falsch, also wie mache ich das? :) – Casey

+0

Ich könnte etwas wie die letzte bekannte Position des Clips intern speichern und wenn ein Treffer erkannt wird, dann die Position auf die letzte bekannte Position zurücksetzen –

Verwandte Themen