2011-05-14 1 views
1

J'ai une boule qui se déplace autour de l'écran en fonction de la façon dont mon téléphone est incliné. Comment appliquer de la friction à la balle pour que, lorsque le téléphone est à plat, la balle s'arrête?application de la friction aux objets

+0

Frottement comme un roulement/glissement sur une surface ou une friction comme dans l'air/l'eau? – Beta

Répondre

2

Sans connaître le niveau de détail de votre modèle ou vos méthodes exactes, je dirais que la meilleure façon de le faire est de penser à la friction comme un vecteur qui a une petite magnitude constante et qui pointe toujours dans la direction opposée au vecteur vitesse de la balle. Vous pouvez obtenir des valeurs d'amplitude appropriées pour différents types de surface simulés par expérimentation. Chaque fois que vous mettez à jour la position et la vélocité de la balle, insérez simplement ce vecteur de friction dans le calcul.

0

Mieux vaut utiliser Box2d Pour obtenir le mouvement de physique

En box2d pour obtenir la friction ...

utilisent ce

b2fixtureDef *fd; 
fd->friction = 0.7;(or whatever) 
+0

@Conor: Vous laissez entendre que c'est pour l'école? Si c'est le cas, veuillez marquer votre question avec [devoirs]. –

1

friction est une force qui agit en face de la motion, de sorte que vous juste besoin de créer un vecteur représentant le frottement qui est pointé dans la direction opposée de votre vecteur de vitesse.

La taille du vecteur de frottement détermine la vitesse à laquelle l'objet s'arrêtera. C'est une valeur constante basée sur le matériau de l'objet en mouvement et les choses sur lesquelles il évolue. Juste faire quelque chose qui a l'air bien pour votre but.

Ajouter le vecteur de frottement au vecteur d'accélération (qui est nul lorsque l'iphone est à plat sur la table). Maintenant faites juste l'interpolation comme d'habitude et cela finira par provoquer l'arrêt de l'objet.

(BTW, lorsque l'objet ne se déplace pas le vecteur de friction doit être mis à zéro)