• User Newbie

    collisione

    Ciao a tutti. Sono nuovo del forum e non molto esperto di actionscript. Comincio, quindi con una domanda.
    Come si fa a rilevare la collisione fra due MC (non la collisione fra un MC ed un punto preciso dello stage: myMovieClip.hitTest(x, y, indicatoreForma)) considerando solo l'area dello stage che i MC occupano e non gli oggetti MC nel loro insieme, cioè come se fossero quadrati o rettangoli? Si usa il comando myMovieClip.hitTest(target) con qualche ?artificio? o si fa in tutt?altro modo?
    Grazie.:ciauz:


  • Super User

    ciao fradedo,
    hai 2 modi:
    forma semplice e alquanto impreciso:

    
    if(clip1_mc.hitTest(clip2_mc))
    {
    	trace('now');
    }
    
    

    modo più preciso (utilizzando il teorema di Pitagora):
    crea 2 palline e chiamale clip_0_mc,clip_1_mc:

    
    var clip_0:MovieClip=this.clip_0_mc;
    var clip_1:MovieClip=this.clip_1_mc;
    clip_0._x=0;
    clip_1._x=Stage.width;
    this.onEnterFrame=function():Void
    {
    	var x:Number=clip_0._x-clip_1._x;
    	var y:Number=clip_0._y-clip_1._y;
    	var distance:Number=Math.sqrt(x*x+y*y);
    	if(distance<=clip_0._width)
    	{
    		this.onEnterFrame=null;
    		trace('stop');
    	}
    	else
    	{
    		clip_0._x++;
    		clip_1._x--;
    	}
    }
    
    

    Ci sarebbe un altro metodo che permette di calcolare la collisione con qualsiasi forma ed in qualsiasi condizione, ma necessita avanzata conoscenza di actionscript e trigonometria.
    Per il momento direi di fermarti al secondo metodo che ti ho scritto 🙂

    :ciauz: