| Mirage Source http://web.miragesource.net/forums/ |
|
| Animation bug? http://web.miragesource.net/forums/viewtopic.php?f=210&t=205 |
Page 1 of 1 |
| Author: | ice [ Thu Jun 29, 2006 6:12 pm ] |
| Post subject: | Animation bug? |
I just noticed that a blank version of MSE, when standing still and fasing left, doens't blit the the wright sprite (I think). It's supposed to blit the player fasing left with legs closed, but it blits the one with open legs. ----------------------------------------------(/\, this one) So I looked in the subBltPlayer and after studying it for a while, I think that this chooses the player sprite: Code: With rec .top = GetPlayerSprite(Index) * PIC_Y .Bottom = .top + PIC_Y .Left = (GetPlayerDir(Index) * 3 + Anim) * PIC_X .Right = .Left + PIC_X End With So when fasing left and anim = 0 then it should blit player fasing left with closed legs, wright? ( .Left= (2 * 3 + 0) * 32 = 192, that is the place where the sprite with closed legs is). I'm kinda confused right now:S, maybe I've missed something? p.s. I couldn't find a help section or something like that |
|
| Author: | Xentar [ Thu Jun 29, 2006 7:16 pm ] |
| Post subject: | |
well, isn't a bug, is like the mirage source is, you need add another chara more (the number four) in stand pose, and say that if the chara isn't walking, he stay in stand pose. well, in my case, i add the four direction on the end of the animations: |up-up-up|dw-dw-dw|lf-lf-lf|ri-ri-ri|up-dw-lf-ri| And in bltplayer sub i add this: Code: If IsTryingToMove = False Then
Select Case GetPlayerDir(MyIndex) Case DIR_UP rec.top = GetPlayerSprite(Index) * PIC_Y rec.Bottom = rec.top + PIC_Y rec.Left = (GetPlayerDir(Index) + 12) * PIC_X rec.Right = rec.Left + PIC_X Case DIR_DOWN rec.top = GetPlayerSprite(Index) * PIC_Y rec.Bottom = rec.top + PIC_Y rec.Left = (GetPlayerDir(Index) + 12) * PIC_X rec.Right = rec.Left + PIC_X Case DIR_LEFT rec.top = GetPlayerSprite(Index) * PIC_Y rec.Bottom = rec.top + PIC_Y rec.Left = (GetPlayerDir(Index) + 13) * PIC_X rec.Right = rec.Left + PIC_X Case DIR_RIGHT rec.top = GetPlayerSprite(Index) * PIC_Y rec.Bottom = rec.top + PIC_Y rec.Left = (GetPlayerDir(Index) + 13) * PIC_X rec.Right = rec.Left + PIC_X End Select u can do the same with the npc's (changing, of course, only one thing) thats only, nothing really hard ^^ i hope its work to u, good luck |
|
| Author: | ice [ Thu Jun 29, 2006 7:23 pm ] |
| Post subject: | |
Okay, I think I get it, thanks. But still, in the source it says: .Left = (GetPlayerDir(Index) * 3 + Anim) * PIC_X (2*3+0) * 32 = 192, and that's where it's supposed to pick the sprite with legs closed, but somehow goes one sprite to the right, it's just that I'm just kind of starting to understand how it all works, only I don't understand why doesn't pick the closed leg sprite. Anyways, thanks for your help. |
|
| Author: | Xentar [ Thu Jun 29, 2006 7:29 pm ] |
| Post subject: | |
well, whats your telling me there is only the thing that say u where is the sprite in the sprites.bmp *3 (saying that the direction is X * 3 poses) where the real animation it is, is in "' Check for animation" where say: if the direction is up, the anim var is 1 and when the bltplayer is reloaded again, the anim var return to 0... ^^ capitsi? if u want add another frame, u need change that for the sprite animation. |
|
| Author: | ice [ Thu Jun 29, 2006 7:46 pm ] |
| Post subject: | |
Ah... Ok, I get it Oh, and I found out that if you change Code: Case DIR_UP If (Player(Index).YOffset < PIC_Y / 2) Then Anim = 1 to Code: Case DIR_UP
If (Player(Index).YOffset > PIC_Y / 2) Then Anim = 1 and do the same for Case DIR_LEFT (change the < to >), it fixes it. Also, if you don't add this, the Left and Up attack animation will go: At - Lf - Rf instead of At - Rf (wich looks much better and is more logical). So it might is a buck, or am I wandering off again?^^ |
|
| Page 1 of 1 | All times are UTC |
| Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |
|