Après avoir obtenu une conférence de mathématiques, il se trouve que cela est facile à résoudre. Premièrement, nous devons obtenir l'angle sur lequel la cible va se déplacer.
float deltaX = targetX - startX;
float deltaY = targetY - startY;
float angle = Math.atan2(deltaY, deltaX);
startX/Y peut être X/Y actuel.
Maintenant que nous avons calculé l'angle, nous pouvons l'appliquer aux coordonnées actuelles:
currentX += speed * Math.cos(angle);//Using cos
currentY += speed * Math.sin(angle);//or sin
pour gérer les calculs de la façon dont seront augmentés de beaucoup X et Y. Utilisation de la vitesse en tant que variable personnalisée si vous avez également besoin d'un jeu de paramètres personnalisé. Si vous n'avez pas besoin de plus de vitesse, supprimez la variable.
Et pour déplacer l'objet, appliquer X/Y à l'objet:
c.drawBitmap(bm, x, y, null);
Exemple:
int speed = 10;
int x, y;
int targetX = 100, targetY = 600;
int startX = 900, startY = 100;
public void render(Canvas c){
super.draw(c);
float deltaX = targetX - startX;
float deltaY = targetY - startY;
float angle = Math.atan2(deltaY, deltaX);
x += speed * Math.cos(angle);//Using cos
y += speed * Math.sin(angle);//or sin
c.drawBitmap(bm, x, y, null);
(...)
}
Le but est ici pour obtenir de se déplacer en ligne droite de la position actuelle à une position cible. Regardez-le comme traverser un carré. C'est un comportement de jeu et c'est possible sans aucun plugin ou add-ons – Zoe
Ce que j'essaie de dire, c'est que cette réponse s'occupe de la physique liée au mouvement, mais pas de la manière automatique de naviguer sur la toile. – Zoe
J'essaie toujours de comprendre) Par exemple, en utilisant la méthode de View.java - setTranslationX (float x), prend des coordonnées et juste redessiner en utilisant Canvas. Vous voulez implémenter le dessin Canvas en fonction de la position? – GensaGames