Adventure Game Studio

AGS Support => Beginners' Technical Questions => Topic started by: manny.p on Sun 19/06/2005 21:39:10

Title: Move objects slower than value 1?
Post by: manny.p on Sun 19/06/2005 21:39:10
I'm using this :

object[0].Move(0, 67, 1, eBlock);

but need it to go slower.

scotch on irc said:

<scotch> hmm, that is slightly tough... you'd need to move it by 1 pixel every few frames, which means you'd have to code that specially in repeatedly execute

<scotch> I'd write out how but I am busy trying to work out something of my own and I'll get confused


can anyone help me with this script?

i just need it for 1 room.
Title: Re: Move objects slower than value 1?
Post by: ilSilente on Sun 19/06/2005 21:59:13
if the animation is blocking (i.e. the player can't do anything while the object is moving, just use tha wait function:

while ( the object hasn't reached the position ) {
  object[0].Move( put correct parameters here );
  wait( # of gamecycles );
}

where # of gamecycle is the time to wait before the next movement. Remeber that by default 1 second = 40 gamecycles. Look for the function Wait in the manual for further information.

--

If the animation is non-blocking, try this:

In global script:

int gamecycle = 0;

export gamecycle;


In global header:

import int gamecycle;

In your room's Repeatedly execute:


gamecycle++;
if (gamecycle == 40 && (object hasn't reached his position)) { // 1 movement per second
  object[0].Move( move the object by 1 pixel at time );
  gamecycle = 1;
  }
Title: Re: Move objects slower than value 1?
Post by: manny.p on Sun 19/06/2005 22:40:23
SOLVED
Title: Re: Move objects slower than value 1?
Post by: markbilly on Mon 26/03/2007 19:26:51
Quote from: ilSilente link=topic=21417.msg261599#msg261599

code]
gamecycle++;
if (gamecycle == 40 && (object hasn't reached his position)) { // 1 movement per second
  object[0].Move( move the object by 1 pixel at time );
  gamecycle = 1;
  }
[/code]

This is an old topic, but I didn't want to start a new one, this script still works, but how do you "move object 1 pixel at a time" I only know how to move it to a set position. Which overrides all this and it zips there really quickly.

Thanks.
Title: Re: Move objects slower than value 1?
Post by: Khris on Mon 26/03/2007 20:11:28
oObject.X++;
Title: Re: Move objects slower than value 1?
Post by: markbilly on Mon 26/03/2007 20:17:22
Quote from: KhrisMUC on Mon 26/03/2007 20:11:28
oObject.X++;

And how to you put the into object[0].Move()?
Title: Re: Move objects slower than value 1?
Post by: Khris on Mon 26/03/2007 20:32:41
You don't need the .Move command; the line will increase the object's x-coordinate i.e. move it one pixel to the right.

I've used oObject to demonstrate the use, you'll have to use object[0].X++; or the Script-o-name (more readable).

Similarly, use .Y++; to move it down or .X--; / .Y--; to move it to the left / up.

So given there's an object called ROCK which you want to move to the right until it's at position (200;150), use:
  gamecycle++;
  if (gamecycle==40 && oRock.X<200) {
    oRock.X++;
    gamecycle=1;
  }
Title: Re: Move objects slower than value 1?
Post by: markbilly on Mon 26/03/2007 20:41:44
Quote from: KhrisMUC on Mon 26/03/2007 20:32:41
You don't need the .Move command; the line will increase the object's x-coordinate i.e. move it one pixel to the right.

I've used oObject to demonstrate the use, you'll have to use object[0].X++; or the Script-o-name (more readable).

Similarly, use .Y++; to move it down or .X--; / .Y--; to move it to the left / up.

So given there's an object called ROCK which you want to move to the right until it's at position (200;150), use:
  gamecycle++;
  if (gamecycle==40 && oRock.X<200) {
    oRock.X++;
    gamecycle=1;
  }


That what I did in the end. Thanks for confirming.