How to sync View,Loop,Frame of two characters?

Started by Monsieur OUXX, Tue 27/10/2015 16:52:46

Previous topic - Next topic

Monsieur OUXX

so I'm trying to animate two different characters simultaneously -- so that Character #2 is exactly in the same animation state as Character #1.
But Character #2 is always one frame late despite getting the ViewFrame from Game.GetViewFrame(c1.View, c1.Loop, c1.Frame).

I know I ran in the problem in the past and I can't remember how I solved it, if I ever solved it.

Isn't there a simple way of doing this now that there is the new repeatedly_execute_late? (or what was it called? _after? I forgot its damn name and I can't seem to find it on the forums, like every time I search it)
 

Kumpel

There is a new command besides _always?

Could you show us your frame delay in a gif or some YTvid?

If this is just some animation without changing the positions of the characters, i'd say you put an object(or character?) in front of the two characters which view includes the two sprites of the animation as one and make the two characters transparent at that time.






Snarky

Quote from: Monsieur OUXX on Tue 27/10/2015 16:52:46
Isn't there a simple way of doing this now that there is the new repeatedly_execute_late?

Yes: Use late_repeatedly_execute_always() (which is what the function is called)

Monsieur OUXX

Quote from: Kumpel on Tue 27/10/2015 17:26:53
There is a new command besides _always?
Yes, there is.

Quote from: Kumpel on Tue 27/10/2015 17:26:53
Could you show us your frame delay in a gif or some YTvid?
No, but it's very simple, really. If you use Game.GetViewFrame(c1.View, c1.Loop, c1.Frame) and then get the .Graphic of the frame, you'll see the frame that was the previous frame of the one currently displayed on-screen.

Quote from: Kumpel on Tue 27/10/2015 17:26:53
If this is just some animation without changing the positions of the characters, i'd say you put an object(or character?) in front of the two characters which view includes the two sprites of the animation as one and make the two characters transparent at that time.
No, there will be a lot of post-processing involved. However you're overthinking it. I know that there is a catch when manipulating the current data of a character, but I can't remember where it lies.

Quote from: Snarky on Tue 27/10/2015 17:37:08
late_repeatedly_execute_always()
Thanks, I'll see if using this fixes my issue!
 

Monsieur OUXX

Actually, hold on. The frame in the "mirror" character is one frame ahead of the original character's frame. So it might be a stupid mistake in my script after all.
 

Snarky

BTW, if you do need to use it, I'm not sure whether this function is included in the 3.4 builds, and for 3.3 you need a special patch.

Khris

Unless the view changes all the time, you can simply do
Code: ags
  c2.Loop = c1.Loop;
  c2.Frame = c1.Frame;

Monsieur OUXX

Quote from: Khris on Tue 27/10/2015 20:15:03
Unless the view changes all the time, you can simply do
Code: ags
  c2.Loop = c1.Loop;
  c2.Frame = c1.Frame;


That's what I'm doing, so that means it's definitely an issue in my script.
 

SMF spam blocked by CleanTalk