Bonjour à tous

Je réalise un méthode dans ma classe Caméra qui me permet de faire trembler la caméra pendant un certains temps (ici uiLength) avec un minimum et un maximum pour les déplacements (ici fMin et fMax) et enfin une vitesse de tremblement (uiSpeed)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
void CCamera::Shake(uint uiSpeed, uint uiLength, float fMin, float fMax)
{
	sf::Clock Clock;
 
	float tempsPrecedent = 0.0f, tempsActuel = 0.0f;
 
	tempsActuel = Clock.GetElapsedTime();
	Clock.Reset();
	if (tempsActuel - tempsPrecedent > uiLength)
	{	
		m_View.Left = m_Coor.m_x;
		m_View.Top = m_Coor.m_y;
		tempsPrecedent = tempsActuel;	// Le temps actuel devient le temps précédent
	}
	m_View.Left = Random(fMax, fMin);
	m_View.Top = Random(fMax, fMin);
}
J'ai dit dans ma boucle de jeu que si l'utilisateur appui sur A alors la caméra tremble pendant le temps qu'il à spécifié :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
case sf::Key::A:
	CCamera::GetInstance()->Shake(2000, 300, 20, 50);
	break;
Seulement ça ne marche pas comme je le voudrais, en effet je suis obligé de rester appuyé sur A pour que la caméra tremble.
Je ne maîtrise pas très bien le temps donc si vous pouviez me donner un pti coup de pouce

Merci d'avance

PS : j'ai pas encore regardé pour la vitesse de tremblement