J'essaie de faire en sorte que le personnage soit dans une tuile et quand il monte ou descend il passe à la case suivante mais je ne suis pas sûr de savoir comment faire. En ce moment, je l'ai mis en place où le personnage se déplace par pixels, mais je veux qu'il se déplace d'un carré.Vue d'ensemble rpg espace en mosaïque
Le code en ce moment est celui-ci, et cela fonctionne, mais il est glitchy en mode pixel. Je crois que si c'était par blocs cela pourrait mieux fonctionner mais je pourrais le changer quand même.
float spritewidth = sprite->stretchX;
float spriteheight = sprite->stretchY;
float bushwidth = bush->stretchX;
float bushheight = bush->stretchY;
//Basic border collision
if (sprite->x <= 0)
sprite->x = 0;
if (sprite->y <= 0)
sprite->y = 0;
if (sprite->x >= 455)
sprite->x = 455;
if (sprite->y >= 237)
sprite->y = 237;
if ((sprite->x + spritewidth > bush->x) && (sprite->x < bush->x + bushwidth) && (sprite->y + spriteheight > bush->y) && (sprite->y < bush->y + bushheight))
{
bushcol = 1;
}
else
{
bushcol = 0;
}
if (osl_keys->held.down)
{
if (bushcol == 1)
{
sprite->y = bush->y - spriteheight - 3;
bushcol = 0;
}
else
{
bushcol = 0;
sprite->y += 3;
}
}
if (osl_keys->held.up)
{
if (bushcol == 1)
{
sprite->y = bush->y + bushheight + 3;
bushcol = 0;
}
else
{
bushcol = 0;
sprite->y -= 3;
}
}
if (osl_keys->held.right)
{
if (bushcol == 1)
{
sprite->x = bush->x - spritewidth - 3;
bushcol = 0;
}
else
{
bushcol = 0;
sprite->x += 3;}
}
if (osl_keys->held.left)
{
if (bushcol == 1)
{
sprite->x = bush->x + bushwidth + 3;
bushcol = 0;
}
else
{
bushcol = 0;
sprite->x -= 3;
}
}
Et la question est? –
Pourrait utiliser plus d'informations ... peut-être montrer la classe (s) pour bush et sprite? En outre, une mosaïque est juste une collection de pixels, donc si elle ne fonctionne pas sur la plus petite échelle possible, elle ne fonctionnera probablement pas sur une plus grande. –