Domanda

ho un arco ruotato disegnato utilizzando la grafica 2d Android

c.drawArc(new RectF(50, 50, 250, 250), 30, 270, true, paint);

l'arco sarà Ruota mentre il gioco è in esecuzione,

Voglio sapere come posso individuare se altri oggetti di gioco (rettangoli, cerchi) si scontrano con esso ??

Questa è la prima volta per me di scrivere un gioco:)

ho visto qualcosa di simile in http://hakim.se/experiments/html5/core/01/

Grazie in anticipo

È stato utile?

Soluzione

collisioni Arc sono leggermente più difficile poi collisioni normali, ma usando l'algebra booleana è possibile controllare se un dato punto è all'interno del vostro arco facilmente.

Date un'occhiata al seguente immagine.

Ci sono 3 oggetti qui. La sfera nero, questo visualizza il tuo arco, se qualcosa si scontra con esso, potrebbe essere all'interno del vostro arco. La sfera rossa in cima alla sfera nera, questo visualizza il 'dentro' dell'arco, se qualcosa è all'interno della sfera rossa, non è sicuramente 'dentro' l'arco. Ora c'è anche il triangolo verde che visualizza il 'cut-off' del vostro arco, qualsiasi cosa all'interno del triangolo verde non è sicuramente anche nel vostro arco.

Come controllare se ci si trova all'interno della sfera nera è facile. (La distanza dell'oggetto per centro della sfera <= raggio della sfera). Lo stesso vale per la sfera rossa. Il triangolo verde è un po 'complicato, bisogna prima costruire questo. Trova le inizio e fine radianti del vostro arco. e ruotare un vettore unitario da radianti inizio. Quindi ruotare un vettore unitario da radianti finali. Allungare entrambi questi vettori di 2 * il raggio della sfera nera. Ora usare il punto centrale del vostro arco e le posizioni dei due vettori con aggiunta la posizione centrale come i 3 punti del triangolo. È quindi possibile utilizzare uno dei solutori di collisione point-triangolo: http://www.bing.com/search?q=point+triangle+collision&go=&form=QBLH&scope=web

Quindi ricorda:!. Collisione con l'arco = (collisione con sfera nera) && (collisione con sfera rossa) && (collisione con triangolo verde)

ARC Collision

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top