Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Problema collisione

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    35

    Problema collisione

    Ciao a tutti ragà,ho fatto un'applet in java dove ci sono 2 immagini .gif e alla pressione delle freccie (UP-DOWN-LEFT-RIGHT) la prima immagine cambia posizione a seconda di dove premi,mentre se premo i tasti W-S-A-D la seconda immagine si muove a seconda di dove premo...

    Ora fin qui tutto bene...

    Ora vorrei fare così:
    Io muovo la mia immagine1 e la mia immagine2 e quando si toccano voglio che appare un messaggio di errore e per fare questo devo implementare una collisione,ma non ho la minima idea da dove partire...

    Ho cercato su google,ho trovato molti post,ma tutti spiegano di come gestire 2 Elippsed2D e quindi non mi sono di molto aiuto...

    Io avevo pensato a qualcosa,ma però funziona solo in parte:
    x1,y1,x2 e y2 sono le distanze della prima e seconda immagine:

    if(x1 == x2 || x1 == y2 || y1 == y2 || y1 == x2)
    {
    ...
    ...
    ...
    }

    Funziona solo se x1 assume il valore di x2 e così via,ma così però non è ciò che voglio...

    Io voglio che anche se l'immagine1 tocca appena l'immagine2 si verifica l'azione della collisione...


    Mi potreste aiutare gentilmente?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Problema collisione

    Originariamente inviato da Snipper
    Io muovo la mia immagine1 e la mia immagine2 e quando si toccano voglio che appare un messaggio di errore e per fare questo devo implementare una collisione,ma non ho la minima idea da dove partire...
    Immagino tu stia parlando di "rettangoli" e di come determinare se si intersecano.
    Potresti usare java.awt.Rectangle e il suo metodo public boolean intersects(Rectangle r)

    In generale comunque c'è una regola che recita a grandi linee così: "due rettangoli si intersecano se la distanza assoluta sull'asse x tra i centri dei due rettangoli è minore della somma delle semilarghezze dei rettangoli e la distanza assoluta sull'asse y tra i centri dei due rettangoli è minore della somma delle semialtezze"
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    35
    eh no,parlo di immagini .gif,è questo il problema

    Mi sai dire qualcosa a riguardo?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Snipper
    eh no,parlo di immagini .gif,è questo il problema
    Sì ... ma cosa rappresentano?? Sono immagini con un contenuto pieno .. rettangolare appunto? O sono immagini con contenuto non pieno ... frastagliato?
    Perché in tal caso determinare una collisione "perfetta" e precisa (quando anche solo 1 pixel interno alla immagine collide con 1 pixel interno all'altra immagine) diventa notevolmente più complesso.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    35
    Sono immagini frastagliate,non sono tutte piene

    Spero mi aiuterai,sto gia morendo dalla voglia!!!

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Snipper
    Sono immagini frastagliate,non sono tutte piene
    Le tue immagini, qualunque cosa e forma rappresentino, sono comunque racchiuse da un "rettangolo". Quindi in ogni caso sarebbe bene prima testare sempre la intersecazione di due rettangoli come ho detto sopra. Se non si intersecano, non fai null'altro. Se si intersecano, allora .... puoi andare più a fondo.

    Ma a quel punto si dovrebbe avere una griglia di bit 0/1 (o qualunque altra cosa che possa indicare un "c'è" o "non c'è") che indica dove sono le zone opache e non. E verificare se almeno 1 pixel opaco di una immagine collide con un altro pixel opaco dell'altra immagine.
    Se poi la immagine fosse con canale alpha e la forma avesse bordi "sfumati" (anti-aliasing), allora ..... beh, la cosa si complicherebbe ancora di più ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    35
    allora a me basterebbe una semplicissima collisione fra queste due immmagini perchè per il momento non ho necessità di fare qualcosa di preciso,ma semplicemente studiare 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 © 2026 vBulletin Solutions, Inc. All rights reserved.