Bonjour à tous,
J'essaie de créer un petit jeu en Silverlight. Je suis tombé sur un comportement assez étrange (d'ailleurs, j'ai eu le même problème il y a quelques temps sous XNA également).

Le principe pour faire simple :
- J'ai un storyboard avec une duration à 0 pour faire bouger mon usercontrol (un simple rectangle).
- J'utilise le translateTransform pour le faire bouger, à chaque storyboard.completed, j'update sa position.
- je regarde sa position pour savoir s'il arrive à la limite du Canvas parent, si oui : je le fais rebondir.

Le problème : parfois, l'usercontrol sort du canvas ! Au lieu de rebondir, il "vibre" et s'éloigne petit à petit du canvas ?!?

Plus l'objet est rapide, plus c'est fréquent :/

J'ai fait un pong en XNA, j'ai eu le même problème, la balle finissait par passer au travers des raquettes .

Le code pour le rebond :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
if (((MatrixTransform)elem.RenderTransform).Matrix.OffsetX > bdf.ActualWidth - elem.ActualWidth)
                elemVelocityX *= -1;
            else if (((MatrixTransform)elem.RenderTransform).Matrix.OffsetX < 0)
                elemVelocityX *= -1;
            else if (((MatrixTransform)elem.RenderTransform).Matrix.OffsetY > bdf.ActualHeight - elem.ActualHeight)
                elemVelocityY *= -1;
            else if (((MatrixTransform)elem.RenderTransform).Matrix.OffsetY < 0)
                elemVelocityY *= -1;
Avez-vous déjà été confrontés à ça ?

Merci d'avance.