Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Animation bug?
#1
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.

[Image: smallsprites.png]
----------------------------------------------(/\, 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 :? , so I just posted it here.
Reply
#2
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
Reply
#3
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.
Reply
#4
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.
Reply
#5
Ah... Ok, I get it Smile . Thanks for the help.

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?^^
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)