Anuncios Google

NF, problema con movimiento personaje

Buenas, resulta que estoy haciendo pruebas para hacer un rpg, y resulta que el personaje al llegar a ciertos limistes del mapa, pues se queda pillado un rato, hasa que me voy a la direccion contraria y la presiono otro rato.

Lo del oldx e y es para otra cosa mas adelante.

Aqui el code:

scanKeys();
		oldx=spritex;
		oldy=spritey;
		if(keysHeld()&KEY_RIGHT){
			if(posicion!=2){
				posicion=2;
				NF_SpriteFrame(0,0,6);
				NF_HflipSprite(0,0,false);
				frame=6;
			}
			else{
				NF_HflipSprite(0,0,false);
				anim ++;
				if (anim > 7) {
					anim = 0;
					frame ++;
					if (frame > 8) frame = 6;
						NF_SpriteFrame(0, 0, frame);
				}
				spritex++;
			}
		}
		else if(keysHeld()&KEY_LEFT){
			if(posicion!=3){
				posicion=3;
				NF_SpriteFrame(0,0,6);
				NF_HflipSprite(0,0,true);
				frame=6;
			}
			else{
				NF_HflipSprite(0,0,true);
				anim ++;
				if (anim > 7) {
					anim = 0;
					frame ++;
					if (frame > 8) frame = 6;
						NF_SpriteFrame(0, 0, frame);
				}
				spritex--;
			}
		}
		else if(keysHeld()&KEY_DOWN){
			if(posicion!=0){
				posicion=0;
				NF_SpriteFrame(0,0,0);
				NF_HflipSprite(0,0,false);
				frame=0;
			}
			else{
				NF_HflipSprite(0,0,false);
				anim ++;
				if (anim > 7) {
					anim = 0;
					frame ++;
					if (frame > 2) frame = 0;
						NF_SpriteFrame(0, 0, frame);
				}
				spritey++;
			}
		}
		else if(keysHeld()&KEY_UP){
			if(posicion!=1){
				posicion=1;
				NF_SpriteFrame(0,0,3);
				NF_HflipSprite(0,0,false);
				frame=3;
			}
			else{
				NF_HflipSprite(0,0,false);
				anim ++;
				if (anim > 7) {
					anim = 0;
					frame ++;
					if (frame > 5) frame = 3;
						NF_SpriteFrame(0, 0, frame);
				}
				spritey--;
			}
		}
		else{
			posicion=4;
			if(keysUp()&KEY_RIGHT){
				NF_SpriteFrame(0,0,6);
				NF_HflipSprite(0,0,false);
			}
			else if(keysUp()&KEY_LEFT){
				NF_SpriteFrame(0,0,6);
				NF_HflipSprite(0,0,true);
			}
			else if(keysUp()&KEY_UP){
				NF_SpriteFrame(0,0,3);
				NF_HflipSprite(0,0,false);
			}
			else if(keysUp()&KEY_DOWN){
				NF_SpriteFrame(0,0,0);
				NF_HflipSprite(0,0,false);
			}
		}
 
		scrollx=spritex-112;
		scrolly=spritey-64;
		scrollxscreen=spritex-112;
		scrollyscreen=spritey-64;
 
		if(scrollx<0){NF_MoveSpriteX(0,0,spritex);scrollxscreen=0;NF_ScrollBg(0,3,0,scrollyscreen);}
		if(scrollx>=0){NF_ScrollBg(0,3,scrollxscreen,scrollyscreen);NF_MoveSprite(0,0,112,64);}
		if(scrolly<0){NF_MoveSpriteY(0,0,spritey);scrollyscreen=0;NF_ScrollBg(0,3,scrollxscreen,0);}
		if(scrolly>=0){NF_ScrollBg(0,3,scrollxscreen,scrollyscreen);NF_MoveSprite(0,0,112,64);}


Be Libre my Friend.


Anuncios Google