Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di Keyren
    Registrato dal
    Aug 2012
    Messaggi
    64

    [Android] Aiuto con il Collision Detection

    Salve come da titolo,mi servirebbe una mano nel far "scontrare", 2 imageview(2 cerchi/sfere) o comunque far in modo che non si passino attraverso,ho già realizzato la prima parte,ovvero ho le due sfere sulle schermo e lo posso trascinare a mio piacimento,ho provato a cercare anche qualche esempio,ma quelli che ho trovato sono troppo complessi(avendo iniziato da poco con android),magari con un piccolo aiutino riesco anche a realizzarlo,come ho detto mi basta,per il momento anche qualcosa di semplice,grazie in anticipo^^

  2. #2
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    Se sono oggetti in 2d basta che testi i 2 quadrilateri + piccoli che contegono le 2 immaggini e poi controllare se effettivamente ci sono pixels validi e non trasparenti, tipo il codice trovato in giro per la rete

    codice:
            int left1, left2;
    	int right1, right2;
    	int top1, top2;
    	int bottom1, bottom2;
    
    	left1 = object1.x;
    	left2 = object2.x;
    	right1 = object1.x + object1.width;
    	right2 = object2,x + object2.width;
    	top1 = object1.y;
    	top2 = object2.y;
    	bottom1 = object1.y + object1.height;
    	bottom2 = object2.y + object2.height;
    
    	if (bottom1 < top2) return(0);
    	if (top1 > bottom2) return(0);
    
    	if (right1 < left2) return(0);
    	if (left1 > right2) return(0);
    
    	return(1);
    Per gli Spartani e Sparta usa spartan Il mio github

  3. #3
    Utente di HTML.it L'avatar di Keyren
    Registrato dal
    Aug 2012
    Messaggi
    64
    Ti ringrazio per avermi risposto^^,ma ho alcuni dubbi,dove va inserito questo pezzo di codice?E poi cosa intende per object1.x/object1.y?Le mie immagini sono 2D e sono delle imageview e una volta trovato l'id con findViewById(R.id.imageView1) tra i metodi delle imageview non c'è x/y l'unica cosa simile è getX() o getY(),avevo provato anche ad usare delle bitmap come immagini e disegnarle su una surfaceview,seguendo un altro esempio trovato in rete,ma non riesco a settare sulla bitmap il touch listener :\ e a me serve che le immagini si possano muovere a mio piacimento trascinandole^^'

  4. #4
    Utente di HTML.it L'avatar di Keyren
    Registrato dal
    Aug 2012
    Messaggi
    64
    Scusate il doppio post,ma non mi faceva modificare il messaggio^^' volevo informare che sono riusco a determinare la collisione,ma non riesco a far si che l'immagine colpita diventi "solida"( per così dire) in modo da evitare alla seconda immagine di attraversarla=\

  5. #5
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    object.x e .y sono le coordinate della tua imafeview. Il codice postato non fa altro che cercare il quadrilatero della tua iimmagine con posizione X,Y. se il punto che cerchi è dentro significa che ce la collisione. Di solito il codice va eseguito ogni volta che le immaggini si muovano. Credo che il problema + grosso è il layout che userai, Se il discorso è molto + complesso proverei ad usare drawview.
    Per gli Spartani e Sparta usa spartan Il mio github

  6. #6
    Utente di HTML.it L'avatar di Keyren
    Registrato dal
    Aug 2012
    Messaggi
    64
    Originariamente inviato da linoma
    object.x e .y sono le coordinate della tua imafeview. Il codice postato non fa altro che cercare il quadrilatero della tua iimmagine con posizione X,Y. se il punto che cerchi è dentro significa che ce la collisione. Di solito il codice va eseguito ogni volta che le immaggini si muovano. Credo che il problema + grosso è il layout che userai, Se il discorso è molto + complesso proverei ad usare drawview.
    Si poi ci sono arrivatoxD(ti ringrazio ancora per il codice,mi è stato utilissimo^^) la parte della collisione risponde correttamente,come layout ha usato quello relativo(Relative Layout) e non sto avendo problemi,l'unica cosa che non riesco a fare,è impedire all'immagine che trascino di attraversare l'immagine contro cui si scontra,come ho scritto al momento mi interessa ottenere questo risultato appunto una collisione e l'oggetto "solido" che mi impedisca di procedere(per così dire^^')

  7. #7
    Utente di HTML.it L'avatar di Keyren
    Registrato dal
    Aug 2012
    Messaggi
    64
    salve non apro un altro topic,visto che tratta lo stesso argomento,per quando riguarda l'impedire alle 2 immagini di attraversarsi,avrei pensato questa soluzione,ovvero creare un secondo rettangolo più piccolo all'interno del primo,e quindi quando i primi rettangoli si intersecano inizia la collisione,poi sempre in stato di "collisione" se il entro in contatto con il rettangolo interno allora,devo far in modo di non poter più proseguire in quella direzione,tipo muro che mi impedisca di proseguire...non so se mi sono spiegato bene^^'.A parole sembra semplice,ma non ho la minima idea di come realizzare questa parte xD

  8. #8
    Utente di HTML.it L'avatar di Keyren
    Registrato dal
    Aug 2012
    Messaggi
    64
    Nessuno?=(

    Sono andato avanti ho creato un rettangolo interno al primo con RectF e verificato se c'è intersezione e funziona tutto solo che non so come impedire alle due immagini di sovrapporsi Help please! xD

  9. #9
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    Fai prima il test e poi fai muovere i 2 oggetti nel caso che nn ci sia collissione.
    Per gli Spartani e Sparta usa spartan Il mio github

  10. #10
    Utente di HTML.it L'avatar di Keyren
    Registrato dal
    Aug 2012
    Messaggi
    64
    Originariamente inviato da linoma
    Fai prima il test e poi fai muovere i 2 oggetti nel caso che nn ci sia collissione.
    grazie per avermi risposto,questo problema mi sta facendo veramente innervosire xD.Comunque non va bene,la soluzione che hai suggerito,perchè fin quando non c'è collisione le immagini si muovono tranquillamente,ma nel momento in cui avviene la collisione,le immagini resteranno bloccate,a me serve che venga impedito il movimento verso la collisione^^'

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.