Click to See Complete Forum and Search --> : Increase animation speed as velocity increases???


martini1
February 19th, 2009, 11:55 AM
When moving a chopper picture around the screen using 3 different chopper pictures, how does one increase the animation speed as the chopper speed increases in velocity?

The drawHelicopter function below switches between each helicopter picture using a counter and then resets. The move function is included to show you how I'm increasing the chopper's speed.


void Helicoptor::drawHelicopter(MyDrawEngine* pTheDrawEngine, MyPicture* pHelicopter, double fRate)
{
sourceRect.top = 0;
sourceRect.bottom = 32;
if(frameCounter == 0)
{
sourceRect.left = 0;
sourceRect.right = 64;
}
if(frameCounter == 1)
{
sourceRect.left = 64;
sourceRect.right = 128;
}
if(frameCounter == 2)
{
sourceRect.left = 128;
sourceRect.right = 192;
}

destRect.top = (int)yCoord;
destRect.bottom = (int)yCoord+32;
destRect.left = (int)xCoord;
destRect.right = (int)xCoord+64;

//Blit: Copy from surface to back buffer(temp draw surrface)
pTheDrawEngine->Blit(destRect, sourceRect, pHelicopter);
}

void Helicoptor::move(MyInputs* pTheInputs, double fTime)
{
yCoord = yCoord + yVelocity * fTime;
xCoord = xCoord + xVelocity * fTime;

if(yCoord < 0) yCoord = 0;
if(yCoord > 720) yCoord = 720;
if(xCoord < 0) xCoord = 0;
if(xCoord > 960) xCoord = 960;

//Move direction
if(KEYPRESSED('Q') && (yVelocity > -61))
{
yVelocity = yVelocity - pixels_per_sec;
}
if(KEYPRESSED('A') && (yVelocity < 61))
{
yVelocity = yVelocity + pixels_per_sec;
}
if(KEYPRESSED('N') && (xVelocity > -61))
{
xVelocity = xVelocity - pixels_per_sec;
}
if(KEYPRESSED('M') && (xVelocity < 61))
{
xVelocity = xVelocity + pixels_per_sec;
}

frameCounter++;
if(frameCounter == 3) frameCounter = 0;
}

ckweius
February 20th, 2009, 01:05 AM
void Helicoptor::move(MyInputs* pTheInputs, double fTime)
{
static int iFrameDelay=130;

yCoord = yCoord + yVelocity * fTime;
xCoord = xCoord + xVelocity * fTime;

if(yCoord < 0) yCoord = 0;
if(yCoord > 720) yCoord = 720;
if(xCoord < 0) xCoord = 0;
if(xCoord > 960) xCoord = 960;

//Move direction
if(KEYPRESSED('Q') && (yVelocity > -61))
{
yVelocity = yVelocity - pixels_per_sec;
}
if(KEYPRESSED('A') && (yVelocity < 61))
{
yVelocity = yVelocity + pixels_per_sec;
}
if(KEYPRESSED('N') && (xVelocity > -61))
{
xVelocity = xVelocity - pixels_per_sec;
}
if(KEYPRESSED('M') && (xVelocity < 61))
{
xVelocity = xVelocity + pixels_per_sec;
}

if ( (iFrameDelay - (abs(xVelocity) + abs(yVelocity))) <= 0 )
{
frameCounter++;
iFrameDelay = 130;
}
else
{
iFrameDelay--;
}

if(frameCounter == 3) frameCounter = 0;
}