Aiuto..sto impazzendo.
Dovrei impostare la Y di un oggetto in base alla collisione con delle BoundingSphere..
Mi spiego:
Ho il mio terreno che, su ogni vertice ha una BoundingSphere.
Il mio personaggio (che è una navetta..) prosegue fino ad incontrare una salita e dunque, dovrebbe salire.
Ora, se faccio così:
IF (collide con la BoundingSphere[i]) {Y.personaggio = Y. BoundingSphere} funziona, cioè il personaggio sale ma il movimento risulta ovviamente a "scalini" perchè il terreno non ha un vertice ogni pixel e dunque sale di un "tot" in base alla Y della BoundingSphere incontrata. Dovrei calcolare la Y del personaggio in base alla BoundingSphere attualmente in collisione e la BoundingSphere in collisione in precedenza...
Conoscendo le posizioni XYZ di A , di B e di P, rilevando la collisione con le BoundingSphere (cerchi gialli), come posso dire che la Y di P deve essere quella, in base alla distanza di P con A e B?
Anche così:
Codice:
if (Posizione_nave1.Y <= bs_vertex[i].Center.Y) {
Posizione_nave1.Y+=Velocità;
}
if (Posizione_nave1.Y >bs_vertex[i].Center.Y)
{
Posizione_nave1.Y -= Velocità;
}
la cosa migliora un po' ma sempre a scalini si muove..
P.S. Si tratta di C#/XNA ma la teoria è la stessa a prescindere dal linguaggio..