I have the movement method here but my only issue is the fact that when the player hits the push mark on the screen, it will stick there and not be able to move backoutside the push zone.
i have to stop the sprite from moving and start the background moving when I reach the zone, so there is a issue with collision with the "zones".
I am probably missing one small step here, if not i might have to try a 3d camera, but i dont know how to set that up from here.
any helpers?
void GameMovement(void)
{
lastPosX = dbSpriteX(1);
lastPosY = dbSpriteY(1);
if(dbDownKey() && !dbLeftKey() && !dbRightKey() && !dbUpKey())
{
if (dbSpriteX(1) > dbScreenWidth() - (dbScreenWidth() / 3))
{
dbSprite(2, dbSpriteX(2) - 1, dbSpriteY(2), 2);
isScrolling = true;
}
if (dbSpriteX(1) < dbScreenWidth() / 3)
{
dbSprite(2, dbSpriteX(2) + 1, dbSpriteY(2), 2);
isScrolling = true;
}
if (dbSpriteY(1) < dbScreenHeight() / 3)
{
dbSprite(2, dbSpriteX(2), dbSpriteY(2) + 1, 2);
isScrolling = true;
}
if (dbSpriteY(1) > dbScreenHeight() - (dbScreenHeight() / 3))
{
dbSprite(2, dbSpriteX(2), dbSpriteY(2) - 1, 2);
isScrolling = true;
}
if (isScrolling == false)
{
dbSprite(1, dbSpriteX(1), dbSpriteY(1) + 1, 1);
}
//dbSprite(1, dbSpriteX(1), dbSpriteY(1) + 1, 1);
if(playerDir != 1)
{
dbSetSpriteFrame(1,1);
dbSprite(1, lastPosX, lastPosY, 1);
}
playerDir = 1;
dbPlaySprite ( 1, 1, 2, 120 );
isScrolling = false;
}
if( (dbDownKey() && dbLeftKey()) && !dbRightKey() && !dbUpKey())
{
if (dbSpriteX(1) > dbScreenWidth() - (dbScreenWidth() / 3))
{
dbSprite(2, dbSpriteX(2) - 1, dbSpriteY(2), 2);
isScrolling = true;
}
if (dbSpriteX(1) < dbScreenWidth() / 3)
{
dbSprite(2, dbSpriteX(2) + 1, dbSpriteY(2), 2);
isScrolling = true;
}
if (dbSpriteY(1) < dbScreenHeight() / 3)
{
dbSprite(2, dbSpriteX(2), dbSpriteY(2) + 1, 2);
isScrolling = true;
}
if (dbSpriteY(1) > dbScreenHeight() - (dbScreenHeight() / 3))
{
dbSprite(2, dbSpriteX(2), dbSpriteY(2) - 1, 2);
isScrolling = true;
}
if(isScrolling == false)
{
dbSprite(1, dbSpriteX(1) - 1, dbSpriteY(1) + 1, 1);
}
//dbSprite(1, dbSpriteX(1) + 1, dbSpriteY(1) + 1, 1);
if(playerDir != 2)
{
dbSetSpriteFrame(1,3);
}
playerDir = 2;
dbPlaySprite ( 1, 3, 4, 120 );
isScrolling = false;
}
if(dbLeftKey() && !dbRightKey() && !dbUpKey() && !dbDownKey())
{
if (dbSpriteX(1) > dbScreenWidth() - (dbScreenWidth() / 3))
{
dbSprite(2, dbSpriteX(2) - 1, dbSpriteY(2), 2);
}
if (dbSpriteX(1) < dbScreenWidth() / 3)
{
dbSprite(2, dbSpriteX(2) + 1, dbSpriteY(2), 2);
}
if (dbSpriteY(1) < dbScreenHeight() / 3)
{
dbSprite(2, dbSpriteX(2), dbSpriteY(2) + 1, 2);
}
if (dbSpriteY(1) > dbScreenHeight() - (dbScreenHeight() / 3))
{
dbSprite(2, dbSpriteX(2), dbSpriteY(2) - 1, 2);
}
dbSprite(1, dbSpriteX(1) - 1, dbSpriteY(1), 1);
//dbSprite(1, dbSpriteX(1) + 1, dbSpriteY(1), 1);
if(playerDir != 3)
{
dbSetSpriteFrame(1,5);
}
playerDir = 3;
dbPlaySprite ( 1, 5, 6, 120 );
}
if( (dbLeftKey() && dbUpKey()) && !dbRightKey() && !dbDownKey())
{
if (dbSpriteX(1) > dbScreenWidth() - (dbScreenWidth() / 3))
{
dbSprite(2, dbSpriteX(2) - 1, dbSpriteY(2), 2);
}
if (dbSpriteX(1) < dbScreenWidth() / 3)
{
dbSprite(2, dbSpriteX(2) + 1, dbSpriteY(2), 2);
}
if (dbSpriteY(1) < dbScreenHeight() / 3)
{
dbSprite(2, dbSpriteX(2), dbSpriteY(2) + 1, 2);
}
if (dbSpriteY(1) > dbScreenHeight() - (dbScreenHeight() / 3))
{
dbSprite(2, dbSpriteX(2), dbSpriteY(2) - 1, 2);
}
dbSprite(1, dbSpriteX(1) - 1, dbSpriteY(1) - 1, 1);
//dbSprite(1, dbSpriteX(1) + 1, dbSpriteY(1) + 1, 1);
if(playerDir != 4)
{
dbSetSpriteFrame(1,7);
}
playerDir = 4;
dbPlaySprite ( 1, 7, 8, 120 );
}
if(dbUpKey() && !dbDownKey() && !dbLeftKey() && !dbRightKey())
{
if (dbSpriteX(1) > dbScreenWidth() - (dbScreenWidth() / 3))
{
dbSprite(2, dbSpriteX(2) - 1, dbSpriteY(2), 2);
}
if (dbSpriteX(1) < dbScreenWidth() / 3)
{
dbSprite(2, dbSpriteX(2) + 1, dbSpriteY(2), 2);
}
if (dbSpriteY(1) < dbScreenHeight() / 3)
{
dbSprite(2, dbSpriteX(2), dbSpriteY(2) + 1, 2);
}
if (dbSpriteY(1) > dbScreenHeight() - (dbScreenHeight() / 3))
{
dbSprite(2, dbSpriteX(2), dbSpriteY(2) - 1, 2);
}
dbSprite(1, dbSpriteX(1), dbSpriteY(1) - 1, 1);
//dbSprite(1, dbSpriteX(1), dbSpriteY(1) + 1, 1);
if(playerDir != 5)
{
dbSetSpriteFrame(1,9);
}
playerDir = 5;
dbPlaySprite (1, 9, 10, 120);
}
if((dbUpKey() && dbRightKey()) && !dbDownKey() && !dbLeftKey())
{
if (dbSpriteX(1) > dbScreenWidth() - (dbScreenWidth() / 3))
{
dbSprite(2, dbSpriteX(2) - 1, dbSpriteY(2), 2);
}
if (dbSpriteX(1) < dbScreenWidth() / 3)
{
dbSprite(2, dbSpriteX(2) + 1, dbSpriteY(2), 2);
}
if (dbSpriteY(1) < dbScreenHeight() / 3)
{
dbSprite(2, dbSpriteX(2), dbSpriteY(2) + 1, 2);
}
if (dbSpriteY(1) > dbScreenHeight() - (dbScreenHeight() / 3))
{
dbSprite(2, dbSpriteX(2), dbSpriteY(2) - 1, 2);
}
dbSprite(1, dbSpriteX(1) + 1, dbSpriteY(1) - 1, 1);
//dbSprite(1, dbSpriteX(1) - 1, dbSpriteY(1) - 1, 1);
if(playerDir != 6)
{
dbSetSpriteFrame(1,11);
}
playerDir = 6;
dbPlaySprite ( 1, 11, 12, 120 );
}
if(dbRightKey() && !dbDownKey() && !dbLeftKey() && !dbUpKey())
{
if (dbSpriteX(1) > dbScreenWidth() - (dbScreenWidth() / 3))
{
dbSprite(2, dbSpriteX(2) - 1, dbSpriteY(2), 2);
}
if (dbSpriteX(1) < dbScreenWidth() / 3)
{
dbSprite(2, dbSpriteX(2) + 1, dbSpriteY(2), 2);
}
if (dbSpriteY(1) < dbScreenHeight() / 3)
{
dbSprite(2, dbSpriteX(2), dbSpriteY(2) + 1, 2);
}
if (dbSpriteY(1) > dbScreenHeight() - (dbScreenHeight() / 3))
{
dbSprite(2, dbSpriteX(2), dbSpriteY(2) - 1, 2);
}
dbSprite(1, dbSpriteX(1) + 1, dbSpriteY(1), 1);
//dbSprite(1, dbSpriteX(1) - 1, dbSpriteY(1), 1);
if(playerDir != 7)
{
dbSetSpriteFrame(1,13);
}
playerDir = 7;
dbPlaySprite (1, 13, 14, 120);
}
if((dbDownKey() && dbRightKey()) && !dbLeftKey() && !dbUpKey())
{
if (dbSpriteX(1) > dbScreenWidth() - (dbScreenWidth() / 3))
{
dbSprite(2, dbSpriteX(2) - 1, dbSpriteY(2), 2);
}
if (dbSpriteX(1) < dbScreenWidth() / 3)
{
dbSprite(2, dbSpriteX(2) + 1, dbSpriteY(2), 2);
}
if (dbSpriteY(1) < dbScreenHeight() / 3)
{
dbSprite(2, dbSpriteX(2), dbSpriteY(2) + 1, 2);
}
if (dbSpriteY(1) > dbScreenHeight() - (dbScreenHeight() / 3))
{
dbSprite(2, dbSpriteX(2), dbSpriteY(2) - 1, 2);
}
dbSprite(1, dbSpriteX(1) + 1, dbSpriteY(1) + 1, 1);
//dbSprite(1, dbSpriteX(1) + 1, dbSpriteY(1) - 1, 1);
if(playerDir != 8)
{
dbSetSpriteFrame(1,15);
}
playerDir = 8;
dbPlaySprite ( 1, 15, 16, 120 );
}
}