Visualizzazione dei risultati da 1 a 9 su 9

Discussione: collisioni

  1. #1

    collisioni

    Mi potete spiegare perchè il metodo hittest mi funziona solo con la priam formula..in caso di collisone delle 2 (dei 2 oggetti)aree di limitazione delle istanze
    if(this.hitTest(_root.poggia))
    e non mi funziona nel caso voglia tener conto dello spazio effettivamente occupato
    if(this.hitTest(_root.poggia._x,_root.poggia._y,tr ue))

  2. #2
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Perchè è esattamente il comportamento previsto per il metodo hitTest, come scritto nel manuale:

    codice:
    myMovieClip.hitTest(x, y, shapeFlag)
    
    Compares the x and y coordinates to the shape or bounding box of the 
    specified instance, according to the shapeFlag setting. If shapeFlag
    is set to true, only the area actually occupied by the instance on 
    the Stage is evaluated, and if x and y overlap at any point, a value 
    of true is returned. This is useful for determining if the movie clip 
    is within a specified hit or hotspot area. 
    
    myMovieClip.hitTest(target)
    
    Evaluates the bounding boxes of the target and specified instance, 
    and returns true if they overlap or intersect at any point.
    Tradotto:

    Valuta i riquadri di delimitazione del target e dell'istanza specificata, e restituisce "true" se si sovrappongono o intersecano in qualunque punto.

  3. #3
    Valuta i riquadri di delimitazione del target e dell'istanza specificata, e restituisce "true" se si sovrappongono o intersecano in qualunque punto.

    si questo vale per la prima formula del metodo hittest...
    if(istanza specificata.hittest(target));

    ma perchè nel secondo modo, dove con true dovrebbe tenermi conto della forma effettiva e no del riquadro di delimitazione dell'oggetto con cui vi è collisione,il metodo non funziona ...è coem se non l'avessi neppure scritto..... va bhe intano io ho fatto un a piccola ricerca sul forun di html.it e ho trovato una possibile ..ma spero sbagliata risposta ..eccola:
    http://forum.html.it/forum/showthrea...hlight=hittest

  4. #4
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Originariamente inviato da recensore

    ma perchè nel secondo modo, dove con true dovrebbe tenermi conto della forma effettiva e no del riquadro di delimitazione dell'oggetto con cui vi è collisione
    Aspetta, il secondo metodo non verifica la collisione tra due oggetti, ma dato:

    myMovieClip.hitTest(x, y, shapeFlag)

    verifica la collisione tra il punto di coordinate (x, y) e il reale contenuto di myMovieClip.

    Quindi, quando scrivi:

    if(this.hitTest(_root.poggia._x,_root.poggia._y,tr ue))

    non stai controllando la collisione tra "this" e "_root.pioggia", bensì tra il reale contenuto di "this" e il punto di coordinate (_root.poggia._x,_root.poggia._y)

  5. #5
    mhh senti se i o volessi sapere quando il mio oggetto in movimento tocca un altro oggetto non lungo la sua area di limitazione ma lungo la sua effettiva forma------coem dovrei fare?o non è possibile coem dicono nell'indirizzo che ti ho inviato

  6. #6
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Esistono diversi metodi, chiaramente non semplici come quel metodo lì. Ad esempio:

    http://actionscript-toolbox.com/samp...nceCollide.php

  7. #7
    che bell'indirizzo..peccato che non sia in italiano..credo che me lo farò tradurre orrendamente da google..grazie!!1

  8. #8
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    E di che..

  9. #9
    Una volta mi sono cimentato con un giochino di un uomo che cammina e che sbattendo ad alcuni oggetti si doveva fermare.

    Ovviamente gli oggetti erano di forme differenti pertanto
    non sapendo come risolvere con Drungantino123 siamo ricorsi ad oggetti invisibili, ovvero supponi che il tuo oggetto avesse una forma irregolare.

    La forma è rimasta forma, ed il contorno l'ho delimitato con una micro linee convertita in clip e duplicata n volte, istanziata con lettera e numero progressivo.
    ogni micro linea disposta opportunamente costituiva il bordo della forma. I clip per il controllo della collisione, puoi metterli in un layer sotto la forma o renderli con _alpha=0

    sulla prima frame

    //array oggetti della collisione
    array = new Array(c1,c2,c3,c4,c5,c6,c7,c8,c9,c10);


    poi sull'omino mosso e rotato dai tasti funzione avevamo inserito questa AS che ti riduco come esempio

    il Cappello dell'omino era l'elemnto di collisione.

    onClipEvent (enterFrame){
    .....tutti i controlli dei tasti li ho cancellati..

    i=0;
    if((mov_x!=0)||(mov_y!=0)) {
    collisione= false;
    i=0;

    while ((collisione == false) && (i<=(_root.array.length-1))) {

    if (this.cappello.hitTest(_root.array[i])) {

    collisione = true;
    setProperty ("", _x, pos_x);
    setProperty ("", _y, pos_y);
    return i;
    }

    i++;

    }

    }
    }


    Spero di essermi spiegato. Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.