WILEz
01-06-2008, 13:07
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.
http://www.wilez.it/bs1.jpg
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...
http://www.wilez.it/bs2.jpg
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ì:
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.
(EDIT) Scusate le parentesi nel titolo..non sapevo.. Ma non mi fa editare il titolo!?
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.
http://www.wilez.it/bs1.jpg
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...
http://www.wilez.it/bs2.jpg
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ì:
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.
(EDIT) Scusate le parentesi nel titolo..non sapevo.. Ma non mi fa editare il titolo!?