PDA

Voir la version complète : [PSP][Aide] Glitch Sprite Sheet


ZereoX
03/04/2008, 03h48
Can je met une MAP sous mon Sprite, mon dernier Frame est blue. Quelqu'un c'est pourquoi?

Dr.Vince
03/04/2008, 08h58
avec le code et les images on pourra mieux t'aider ;)

Nesgba
03/04/2008, 13h45
flip buffer ?

ZereoX
03/04/2008, 15h22
Ceci est base sur les tuto de Yodajr:
#include <oslib/oslib.h>
#include "Potos_Village.h"

PSP_MODULE_INFO("Battle-Arena", 0, 1, 1);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);

OSL_IMAGE *Duran, *Potos_Village;
OSL_MAP *Potos;

#define UP 0
#define DOWN 32
#define LEFT 64
#define RIGHT 96

int Duran_Dir;
int Walk_Anim;
int Walk_Anim_Timer;
int i;

void Buttons();
void WalkAnim();

int main(){

oslInit(0);

oslInitGfx(OSL_PF_8888, 1);

oslShowSplashScreen(1);

oslSetTransparentColor(RGB(255, 0, 255));
Potos_Village = oslLoadImageFile("Images/Map/Potos/Potos_Village.png", OSL_IN_RAM, OSL_PF_5551);
Duran = oslLoadImageFile("Images/Char/Player/Duran.png", OSL_IN_RAM, OSL_PF_5551);
oslDisableTransparentColor();

Potos = oslCreateMap(
Potos_Village,
Potos_Village_map,
16,16,
29,27,
OSL_MF_U16);

Duran->x = 240;
Duran->y = 130;
Duran_Dir = DOWN;

while (!osl_quit)
{
oslStartDrawing();
oslCls();
Buttons();
oslDrawMapSimple(Potos);
oslDrawImage(Duran);
oslEndDrawing();
oslSyncFrame();
}

oslEndGfx();
oslQuit();
return 0;
}

void Buttons()
{
oslReadKeys();

if (osl_keys->held.down)
{
Duran->y += 2;
Potos->scrollY += 2;
Duran_Dir = DOWN;
WalkAnim();
}
if (osl_keys->held.up)
{
Duran->y -= 2;
Potos->scrollY -= 2;
Duran_Dir = UP;
WalkAnim();
}
if (osl_keys->held.left)
{
Duran->x -= 2;
Potos->scrollX -= 2;
Duran_Dir = LEFT;
WalkAnim();
}
if (osl_keys->held.right)
{
Duran->x += 2;
Potos->scrollX += 2;
Duran_Dir = RIGHT;
WalkAnim();
}

if (!osl_keys->held.value)
{
Walk_Anim = 0;
Walk_Anim_Timer = 0;

oslSetImageTileSize(Duran,0,Duran_Dir,21,32);
}
}

void WalkAnim(){

Walk_Anim_Timer++;
if(Walk_Anim_Timer == 6){
Walk_Anim_Timer = 0;
Walk_Anim++;
oslSetImageTileSize(Duran, (Walk_Anim * 21), Duran_Dir, 21, 32);

if(Walk_Anim == 4) Walk_Anim = 0;
}
}

Muryoh
04/04/2008, 12h05
void WalkAnim(){

Walk_Anim_Timer++;
if(Walk_Anim_Timer == 6){
Walk_Anim_Timer = 0;
Walk_Anim++;
oslSetImageTileSize(Duran, (Walk_Anim * 21), Duran_Dir, 21, 32);

if(Walk_Anim == 4) Walk_Anim = 0;
}
}

if(Walk_Anim == 4) Walk_Anim = 0; met plutot if(Walk_Anim == 3) Walk_Anim = 0;

effectivement, ca compte 0,1,2 et 3 , et non 1,2,3 et 4 , faut pas oublier que l'on commence par 0 en prog et non 1 :D

ZereoX
05/04/2008, 21h33
Muryoh-- Merci, je pensais que j'avais deja changer cette variable peut-import merci.