J'ai essayé de résoudre le problème du zoom par pincement pour un CameraInputController. Je veux qu'il fasse un zoom avant et arrière par rapport à l'origine, mais qu'il soit limité entre 3 et 10. J'ai mis ce bout de code dans la fonction zoom() :
public boolean zoom (float amount) {
if(camera.position.len() < 3 && amount > 0)
{
return false;
}
if(camera.position.len() > 10 && amount < 0)
{
return false;
}
if (!alwaysScroll && activateKey != 0 && !activatePressed)
return false;
Gdx.app.log("zoom", amount + "");
camera.translate(tmpV1.set(camera.direction).scl(amount));
if (scrollTarget)
target.add(tmpV1);
if (autoUpdate)
camera.update();
return true;
}
Cela fonctionne bien si j'appelle simplement la fonction de zoom (par exemple un bouton de zoom), mais lorsque je fais un zoom par pincement, la caméra est capable de faire un zoom avant bien au-delà de 3, et lorsque je fais un zoom arrière, la caméra fait un saut assez radical lorsqu'elle s'approche de 10. Étrangement, le zoom par pincement est très fluide si je n'ai pas ces limites.
Si j'affiche la variable de quantité, le zoom par pincement me donne une gamme de chiffres assez large, quelque chose comme ceci lors du zoom arrière :
-3.4762511
3.425479
-3.386308
3.353984
et ceci en faisant un zoom avant :
3.6231816
-3.553997
3.8673449
-3.81199
Lorsque je regarde la fonction zoom() à l'intérieur du CameraGestureListener, la valeur du montant varie également en fonction des charges. Si je regarde la fonction pinch(), à chaque fois qu'elle est appelée, la position du pointeur2 alterne entre la position du premier et du deuxième doigt.
Pourrait-il s'agir d'un bug ? Quelqu'un a-t-il une idée de ce qui se passe ? Et comment je peux résoudre ce problème ?