Jeu en Silverlight : problème sur les objets trop rapides
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 :roll:.
Le code pour le rebond :
Code:
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.