Existe-t-il un moyen facile et raisonnable de mettre en œuvre la libre circulation dans un jeu isométrique à base de tuiles? Cela signifie que le joueur ne sauterait pas instantanément d'une tuile à l'autre ou ne serait pas "accroché" à la grille (par exemple, si le mouvement entre les tuiles était animé mais que vous ne pouviez rien faire avant la fin de l'animation). Je suis vraiment un débutant avec tout ce qui concerne la programmation de jeux, mais avec l'aide de ce site et d'autres ressources, il était assez facile de faire les choses de base, mais je n'ai pas pu trouver de ressources utiles pour ce problème particulier .
Actuellement, j'ai improvisé quelque chose proche de cela: http://jsfiddle.net/KwW5b/4/ (mouvement WASD). L'idée du mouvement était d'utiliser la carte de la souris pour détecter le moment où le joueur s'est déplacé vers une autre tuile, puis inverser les décalages, et pour la plupart cela fonctionne correctement (chaque coin fait déplacer le joueur au mauvais endroit: voir http: //www.youtube.com/watch?v=0xr15IaOhrI , ce qui est probablement dû au fait que je n'ai pas pu faire fonctionner correctement la carte complète de la souris), mais je ne me fais aucune illusion qu'elle est même proche d'une bonne solution. Et de toute façon, c'est surtout juste pour montrer quel genre de chose j'aimerais implémenter.
la source
Réponses:
Tout d'abord, je vous suggère de changer de direction: W - haut-gauche S - bas-droit A - bas-gauche D - haut-droit
en plus intuitif: W - haut S - bas A - gauche D - droit
En ce qui concerne votre préoccupation, je vous suggère de créer deux fonctions, l'une traduisant les coordonnées des tuiles isométriques en coordonnées de grille, et l'autre dans l'autre sens. De cette façon, vous pourriez simplement séparer MVC et cela vous faciliterait la vie lors du calcul de la tuile active:
la source
Si je comprends bien, vous voulez que le joueur déplace la tuile en tuile mais sans sauter. Vous pouvez:
1- Commencez avec la tuile t0 et le décalage 0
2- Lorsque le joueur passe à la tuile t1, définissez le décalage = - (t1 - t0)
3- Dans la mise à jour du lecteur, si le décalage n'est pas 0, décrémentez en utilisant le temps de mise à jour et la vitesse du lecteur.
4- Vous pouvez utiliser offset == 0 vérifier pour savoir quand le joueur est sur la tuile.
Avec cela, vous obtenez un joueur qui se déplace librement sur la carte mais reste fidèle aux tuiles.
la source