Ho questo gioco "stile Breakeout".
Ho un cannone al centro, blocchi attorno al cannone e cuscinetti attorno ai blocchi. Ecco come appare il gioco:
Sono riuscito a ottenere la collisione per pixel e la mia palla "si riflette " al contatto con i blocchi con la seguente matematica:
Ball.Direction = 2 * (Block.Direction - Ball.Direction) + 180;
Dove la linea blu è la direzione della palla e la linea nera (linea di base) è la superficie del blocco.
La direzione è un angolo espresso in radianti (che può essere convertito in gradi, ovviamente).
La palla viene mossa da:
// Event.ENTER_FRAME
x += Math.sin(Direction) * Velocity;
y -= Math.cos(Direction) * Velocity;
Fin qui tutto bene.
Il mio problema viene ora, con i pad (i 3 blocchi scuri e grandi attorno ai piccoli blocchi colorati).
Mentre si girano, l'angolo della superficie cambia.
Inoltre, la palla dovrebbe colpire anche i lati, quindi, come posso misurare la direzione del colpo e la nuova direzione di movimento della palla?
ps : se necessario, posso fornire il codice e un file SWF giocabile.
modificare
Ok, il problema con gli angoli è stato risolto con i vettori , ma ho ancora il problema con i lati e la collisione posteriore.
Aprirò un'altra domanda e la collegherò qui.