Ich versuche, es zu machen, wo der Charakter in einer Kachel ist und wenn sie sich nach oben oder unten bewegen, bewegt es sich zum nächsten Kachel, aber ich bin mir nicht sicher, wie das geht. Gerade jetzt, ich habe es eingerichtet, wo der Charakter um Pixel bewegt, aber ich möchte es um 1 Quadrat verschieben.Überblick rpg gekachelt Raum
Der Code im Moment ist dies, und es funktioniert, aber es ist im Pixel-Modus glitchy. Ich glaube, wenn es Blöcke gab, könnte es besser funktionieren, aber ich könnte es trotzdem ändern.
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;
}
}
Und die Frage ist? –
Könntest du noch mehr Infos verwenden ... vielleicht die Klasse (n) für Bush und Sprite zeigen? Auch eine Kachel ist nur eine Sammlung von Pixeln, wenn sie also nicht im kleinstmöglichen Maßstab funktioniert, wird sie wahrscheinlich nicht auf einem größeren funktionieren. –