JeuWeb - Crée ton jeu par navigateur
Taille Tiles personnage - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Taille Tiles personnage (/showthread.php?tid=6981)



Taille Tiles personnage - tirzite - 17-06-2013

Bonjour à tous,

Voila, je commence à me pencher sur une solution à trouver pour gérer les tailles des personnages.

Pour être un peu plus concret, sur une carte en 2D non isométrique, les cases sont en 32x32.
Taille standard pour des tiles.
La gestion des décors (franchissables ou non ) se fait en BDD avec les coordonnés de chaque cases.

Jusqu’à présent les tiles characters faisait 32x32 pixels, donc pas de soucis pour gerer les déplacement et les coordonnées.

Sauf que je teste l'ajout de monture et de plus gros PNJ, et la pour gérer les collisions , je rencontre un soucis du fait de la différence de taille des images.

Si quelqu'un à déjà rencontré ce type de soucis, et à une trouver une solution ?

[Image: Sans_titre.png]

petit vision du soucis sur une carte de test.
Faudrait il que je revoie le système de collision, qui actuellement test en fonction de la case suivante la présence d'un obstacle via

Code :
if (newX <= 15 && newY <= 20 && newY >= 1 && newX >= 1 && array_block[newX][newY] == 0)



RE: Taille Tiles personnage - Maks - 17-06-2013

il faut que tu tries ton tableau de personnage selon leur coordonnée Y ascendante avant de les dessiner


RE: Taille Tiles personnage - tirzite - 17-06-2013

Je me suis peut être mal expliquer sur la problèmatique.

Alors pour être plus précis :

Les maps sont générer via la BDD et des coordonnées X-Y.
chaque coordonnées représentent une case de 32px*32px
Les personnages sont ensuite dessiner via leurs X-Y et un calcul du style
Code :
X * 32 - 32 et Y * 32 - 32
pour établir leurs positions sur la carte

Chaque coordonnées peut accueillir un PJ ou un PNJ ou un obstacle

Jusqu’à présent je n'utiliser que des images de personnage de 32px*32px, ce qui ne pose pas de problème de collision et de placement sur la carte du fait qu'il ne dépasse pas de chaque case.

J'envisage de créer des PNJ plus grands que 32*32 en images, de ce fait il dépasse de chaque coordonnées.
Et la arrivent les soucis de collision et de placement.
En sachant que les déplacements s'effectue en JS via un .animate( + 32px)

Faut il revoir complétement mon système, ou je peux envisager un placement en fonction de la taille de l'image ?

Pour les moments les différents tests ne sont pas bien concluant.
(dépassement des bordures de la carte ...)

personne n'utilise un système de map équivalente ? et aurais une piste sur laquelle avancer ?


RE: Taille Tiles personnage - Maks - 17-06-2013

Qu'est ce que tu entends par collision ? Est-ce qu'un personnage de 64*64 par exemple prendra deux cases au lieu d'une ?

Ce que je te proposais c'est de mettre en place un effet de profondeur, et de recentrer tes personnages par rapport à la case (aligner vers le bas sur les Y -sur les pieds, centrer au milieu sur les X).


RE: Taille Tiles personnage - tirzite - 17-06-2013

Un perso de 64 * 64 ne prendra toujours qu'une cases en BDD et s'affichera sur quasiment 4 cases sur la map.
Pour les collision, il y a des cases qui ne sont pas "franchissables" (mur, arbre ...)

Je vais mettre sur papier les différentes tailles et voir l'alignement pour le bas des perso, merci pour la pisete


RE: Taille Tiles personnage - Alchimèriste - 17-06-2013

Je ne connais rien aux codes à part ceux des années 80 :weird:


..mais tu ne peux pas conditionner un déplacement ou tester un contact avec une simple variable de taille?

Chaque case est une unité rigide de x pixels (32 px ici). Okay, Il faut considérer le milieu de ton entité et ajouter la moitié de sa largeur (ou hauteur).

Si la pierre - par exemple - de 50 pixels de large se trouve sur la case horizontale numéro 8 ça fait que le centre de cette pierre est à 8 cases x (32-16) pixels à quoi on ajoute 25 pixels à droite et -25 à gauche : c'est à dire les limites de la collision.

??

Okay je sors.... j'ai compris je dis nimp


RE: Taille Tiles personnage - Xenos - 17-06-2013

Tu connais donc le COBOL?
/troll



RE: Taille Tiles personnage - Maks - 18-06-2013

000001 Le cobol lol
000002 ok j'arrête /troll

Par exemple voilà comment on pourrait aligner un personnage par rapport à une canvas sur un canvas en javascript :


ctx.drawImage(
image,
this.x * TILE_WIDTH - (this.width - TILE_WIDTH) / 2,
this.y * TILE_HEIGHT + TILE_HEIGHT - this.height
);

Les attributs x et y étant les coords de ton objet Personnage, TILE_WIDTH et TILE_HEIGHT étant les constantes de largeur/hauteur d'une case (ici 32), et surtout PAS DE CHIFFRE EN DUR (sinon après c'est l'enfer pour savoir qui est quoi).

Avec ça on aura un personnage qui a les pieds sur le bas de la case, et qui sera centré verticalement par rapport à la case Smile


RE: Taille Tiles personnage - tirzite - 26-06-2013

Salut,

Merci Maks pour la solution du placement, a force d'essayer plein de placement différents, ta solution fonctionne très bien.