Collision-Detection Methoden in C++

Ich bin neu in c++ und ich praktiziere seit Kollision in einem kleinen Spiel-Programm, das nichts tut und ich einfach nicht die Kollision Recht

Also ich benutze geladenen Bilder in Variablen

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);

Während es in der Variablen gespeichert, wie

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;      
}

So, wenn ich eine Taste drücken

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;
}
}

ich dachte an Dinge wie

sprite->y = bushheight - 24;

aber es funktioniert nicht

Irgendwelche Vorschläge?

  • Was genau funktioniert nicht? Außerdem, meinten Sie zu mischen, x und y in den Ausdruck sprite->y = busy->x - 3?
Schreibe einen Kommentar