• FEATURED

View more

View more

View more

\$10

Image of the Day Submit

IOTD | Top Screenshots

Asphyre 3.1.0 Creating New Line of Sprites and Sync it's AnimPos with Rest

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

2 replies to this topic

#1robert83a1  Members

Posted 10 January 2013 - 05:09 PM

Hello,

I'm in the process of creating a map editor for my Space Shooter game, I've progressed some since I've begun. I've currently implemented smooth scrolling , by creating a screen full of sprites + 1 additional line, I move my entire Sprite Sheet down till I reach 32 (tile height) then I destroy the Sprite Line which is invisible and Create the new tile line bellow , and I repeat this proccess till I reach the map end. It works like magic , my only problem is that each new line of created sprites has it's animation position slightly off ... which creates an undesired wave effect.

It would be to complicated for me to try and explain, and to attach part of the code, maybe you would not understand. I'm attaching my entire editor with full source.

If you fire it up, and go to FILE -> OPEN MAP -> LEVEL02 , then keep pressing the UP arrow, it will start smooth scrolling down the map, you'll see what I mean.

How can I stop this? How can I sync the new tile line with the previous tiles ?

Greetings

Robert

#2Khatharr  Members

Posted 10 January 2013 - 05:41 PM

I think you'll get better results posting the relevant code rather than the full project.

void hurrrrrrrr() {__asm sub [ebp+4],5;}

There are ten kinds of people in this world: those who understand binary and those who don't.

#3robert83a1  Members

Posted 11 January 2013 - 01:23 AM

Hello,

Okay thank you , here it goes .

The part of the code that does the scrolling down :

procedure TMain.TestExecute(Sender: TObject);
var x,y : integer;
new_line : boolean;
begin

if Offset < Map.map_length-14 then    // -14 , Number of Tile Lines Drawn on Screen
begin

inc(Counter,1);         // I'm using this to check if I've scrolled down one tile Height (32), if I did
if Counter = 32 then    // then I'm increasing Offset by 1 and reseting Counter to 0, Offset is used to tell the new line of sprites which Line of TileData
begin                 // to read from the array
Inc(offset,1);
Counter:=0;
end;

for y:=0 to 15 do
begin
for x :=0 to 19 do
begin
BackGround[x,y].Y:=BackGround[x,y].Y-1;

if BackGround[x,y].Y = -32 then
begin
new_line := true;
end;
if new_line = true then
begin
BackGround[x,y]:= TBackGround.Create(SpriteEngine);
Edit9.Text:=inttostr(offset);
BackGround[x,y].ImageName:= Images.Item[map.Lines[offset+15,x].ImageIndex].Name;

if BackGround[x,y].PatternCount = 1 then
begin
BackGround[x,y].DoAnimate:=false;
end
else
begin
// this part should sync the animations, it does... but only for the newly created line, which is not in sync with the line before it
// after a few lines scrolling down I get a nice wave effect, due to the fact that each new line is created at a sligthly later time
// something here very wrong, I should somehow sync the new line with the previous line....
// ahol imageindex = imageindex elozorol
BackGround[x,y].AnimStart:=0;
BackGround[x,y].AnimCount:=map.Lines[offset+15,x].AnimCount;
BackGround[x,y].AnimSpeed:=map.Lines[offset+15,x].AnimSpeed;
BackGround[x,y].AnimPos:=(GlobalAnimCounter mod BackGround[x,y].AnimCount+map.Lines[offset+15,x].AnimStart);
BackGround[x,y].DoAnimate:=true;
BackGround[x,y].AnimLooped:=true;
end;

BackGround[x,y].X:=x*32;
BackGround[x,y].Y:=480;
BackGround[x,y].Z:=1;
new_line:=false;
end;
end;
end;

end;

end;


0..14 is visible on my screen , line 15 is the aditional line for smooth scrolling (using 640x480 resolution).

Problem is , newly created sprite line animation starts at different time then the rest, if you still download the exe and test the map I've included you'll see about the wave effect.
How can I set the newly created tile line to have the same animation start as the previous one?

Greetings
Robert

Edited by robert83a1, 11 January 2013 - 01:25 AM.

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.