2011-12-13 1 views
0

Il existe de nombreux didacticiels sur la souris. La plupart d'entre eux présentent une formule simple pour faciliter le mouvement:Abattage/suppression de suiveurs de la souris

x += (tx - x)/interp; 
y += (ty - y)/interp; 

(tx = position cible, x = position réelle, interp> 1)

Cela rend le suiveur aller très vite au début, puis décélérer lentement jusqu'à la position cible.

Comment dois-je changer le formulaire, pour que je puisse définir une accélération personnalisée, une décélération personnalisée et une vitesse maximale pour le mouvement entre les deux? Pour le tout début je serais heureux avec une accélération supplémentaire du tout.

Merci!

Hans

Répondre

0

L'accélération est la variation de la vitesse dans le temps. Donc, en 1D, d'appliquer une vitesse constante, vous feriez:

v += a * dt; 
x += v * dt; 

où:

  • a est l'accélération (une constante)
  • v est la vitesse
  • x est la position x
  • dt est le temps écoulé, c'est-à-dire le temps entre les mises à jour

Vous feriez quelque chose de similaire pour la décélération, sauf que a serait désormais négatif.

Pour définir une vitesse maximale, il vous suffit d'un chèque conditionnel à v, peut-être:

v = MIN(v_max, v); 

v_max est votre vitesse maximale autorisée (une constante).

En 2D, vous aurez besoin de prendre en compte la direction du Voyage:

x += v * cos(theta); 
y += v * sin(theta); 

Je vais vous laisser à de calculer theta ...