Bon, je donnes ma langue aux chats ...
j'essaye en vain depuis quelques jours de réaliser une porte coulissante mais là, j'en peux plus !
Ce que j'ai compris c'est que tout les temps 't' sont pris sur la simulation or je pense avoir besoin d'une constante pour chaque déplacement. J'ai repris le script DoorScript et j'ai essayé de lui donner des translations dans un cycle(t) d'automate mais il reprend la position du simu pour les actions triggers (before/behind) du coup la porte fait n'importe quoi.
Je suis arrivé a faire passer la porte d'une position à une autre mais c'est juste un changement et c'est malheureusement instantané. C'est pour cette raison que j'aimerais utiliser la PolyRamp mais je suis plus sur de rien...
Il me semble avoir tout essayer autour de cette fonction 'translation' mais j'y arrives pô...
Siouplais !
j'essaye en vain depuis quelques jours de réaliser une porte coulissante mais là, j'en peux plus !
Ce que j'ai compris c'est que tout les temps 't' sont pris sur la simulation or je pense avoir besoin d'une constante pour chaque déplacement. J'ai repris le script DoorScript et j'ai essayé de lui donner des translations dans un cycle(t) d'automate mais il reprend la position du simu pour les actions triggers (before/behind) du coup la porte fait n'importe quoi.
Je suis arrivé a faire passer la porte d'une position à une autre mais c'est juste un changement et c'est malheureusement instantané. C'est pour cette raison que j'aimerais utiliser la PolyRamp mais je suis plus sur de rien...
Il me semble avoir tout essayer autour de cette fonction 'translation' mais j'y arrives pô...
Code:
float cycle = 2.0f;
float Max_Depl = 0.1f;
public void onNextFrame(float fTickTime)
{
float t = (float)sim.getCurAbsSimulationTimeSec() % cycle;
float startDelay = 0;
switch (state)
{
case STATE_IDLE:
break;
case STATE_OPENING:
{
if (state == 1)
{
m_porte_pos.y = PolyRamp(0, Max_Depl, 0+startDelay, 2+startDelay, t, 0, 1.5f, 1, -1.5f);
porte.setTranslation(m_porte_pos);
break;
}
}
case STATE_OPENING_REVERSED:
{
if (state == 2)
{
m_porte_pos.y = PolyRamp(0, Max_Depl, 0+startDelay, 2+startDelay, t, 0, 1.5f, 1, -1.5f);
porte.setTranslation(m_porte_pos);
break;
}
}
case STATE_CLOSING:
{
rot += fTickTime * t;
if (state == 3)
{
m_porte_pos.y = PolyRamp(Max_Depl, 0, 0+startDelay, 3+startDelay, rot, 0, 1.5f, 1, -1.5f);
porte.setTranslation(m_porte_pos);
break;
}
}
}
}
Siouplais !