Je suis nouveau à C++ et je pratique la collision dans un petit programme de jeu qui ne fait rien et je ne peux pas obtenir la collision droiteméthodes détection de collision en C++
J'utiliser des images chargées dans des variables
background = oslLoadImageFile("background.png", OSL_IN_RAM, OSL_PF_5551);
sprite = oslLoadImageFile("sprite.png", OSL_IN_RAM, OSL_PF_5551);
bush = oslLoadImageFile("bush.png", OSL_IN_RAM, OSL_PF_5551);
Bien qu'il existe des variables stockées comme
sprite->x = 3;
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;
}
Alors, quand je presse un bouton
if (osl_keys->held.down)
{
if (bushcol == 1)
{
sprite->y = bush->y + 38;
}
else
{
sprite->y += 3;
}
}
if (osl_keys->held.up)
{
if (bushcol == 1)
{
sprite->y = bush->y - 23;
}
else
{
sprite->y -= 3;
}
}
if (osl_keys->held.right)
{
if (bushcol == 1)
{
sprite->x = bush->x - 28;
}
else
{
sprite->x += 3;
}
}
if (osl_keys->held.left)
{
if (bushcol == 1)
{
sprite->x = bush->x + 28;
}
else
{
sprite->x -= 3;
}
}
je pensais à des choses comme
sprite->y = bushheight - 24;
mais cela ne fonctionne pas
Toutes les suggestions?
Ce qui, exactement, ne fonctionne pas? Aussi, vouliez-vous mélanger x et y dans l'expression sprite-> y = busy-> x-3? – Naaff