Hola gente! Un saludo
Quisiera quitarles un poco de su tiempo, estoy realizando un juego de plataforma con Game Maker, pero al parecer tengo un problema con el cambio de sprites, cuando se realiza el salto todo muy bien y no hay problema pero cuando quiero realizar el cambio de sprite a correr o caminar esta el problema, estoy siguiendo un tuto, pues soy novato en el tema, aunque ya con un poco de conocimiento.
El evento create esta asi:
///Variables
image_speed = 1
//Variables de Movimiento /Numericas
intVY = 0;
intVX = 0;
intMove = 0;
intMultiplicador = 1.0;
intVYMax = 9 * intMultiplicador;
intVXMax = 6.5 * intMultiplicador;
intJumpHeight = 8 * intMultiplicador;
intGravityNorm = 0.5 *intMultiplicador;
intGroundAcc = 0.5 *intMultiplicador
intGroundFricc = 1.9 * intMultiplicador
intAirAcc = 0.75 *intMultiplicador
intAirFricc = 0.1 *intMultiplicador
en el evento step tengo dos piezas de codigo:
el primero:
///Desplazamiento
var keyLeft, keyRight, keyJump, keyJumpRelease;
keyLeft = -keyboard_check (vk_left)
keyRight = keyboard_check (vk_right)
keyJump = keyboard_check_pressed(vk_space)
keyJumpRelease = keyboard_check_released (vk_space)
//Comprobacion de Colisiones
intColLeft = place_meeting(x-1, y, obj_bloque);
intColRight = place_meeting(x+1,y,obj_bloque);
bolGround = (place_meeting (x,y+1,obj_bloque));
intMove = keyLeft + keyRight;
//Definir aceleracion y friccion en funcion del medio
if (!bolGround)
{
intTempAcc = intAirAcc;
intTempFricc = intAirFricc;
}
else
{
intTempAcc = intGroundAcc;
intTempFricc = intGroundFricc;
}
//velocidad horizontal
if (intMove != 0) intVX = scr_Approach(intVX, intVXMax *intMove, intTempAcc);
else intVX = scr_Approach(intVX, intVXMax *intMove, intTempFricc);
//velocidad vertical
if (!bolGround)
{
intVY = scr_Approach (intVY, intVYMax, intGravityNorm); // caida libre
}
//Salto
if (keyJump && bolGround) intVY = -intVYMax;
//Colision Horizontal
repeat(abs(intVX))
{
if (!place_meeting(x+ intVX, y,obj_bloque))
{
x += intVX
}
else
{
intVX = 0
break;
}
}
//Colision vertical
repeat (abs(intVY))
{
if (place_meeting(x, y + intVY, obj_bloque))
{
intVY = 0;
break
}
else
{y += intVY}
}
EL SEGUNDO:
///Animaciones
///Refeljo del personaje
if(intMove) != 0 image_xscale = intMove
//Cambio de Sprite
if (!bolGround)
{
sprite_index = spr_DnVj
}
else
{ sprite_index = spr_DnVs
}
if intVX != 0 && (bolGround)
{
sprite_index = spr_DnVr
}
EL PROBLEMA RADICA EN:
if (intVX !=0) sprite_index = spr_Caminar
no me salta ningún error, pero a la hora de realizar la accion de caminar si me muestra el sprite pero solamente la primera subimagen, no muestra el resto de subimagenes, crea el desplazamiento pero solamente la primera subimagen, mire en las variables y alli image_speed esta en un valor 1, pero sin embargo no da solucion.
Mire el punto de origen de cada sprite, y del bloque pero aun asi no me da solucion.
A lo mejor no sea algo tan complicado pero si pudieran ayudarme con este problema y poder seguir les estaria enteramente agradecido.
Un saludo y Buen dia!
Mira, te dare el mejor consejo que puedo darte desde lo mas profundo de mi corazón, el montydrake tiene muy buenos tutos y es carismatico, sin embargo su serie de tutos sobre plataforma tienes muchos errores, y ese que te encontraste no es sino uno de ellos, mas adelante hay mas, por lo cual te recomiendo usar otros tutos que sean mas simples de entender y tengan una curva de aprendizaje baja para que puedas mejorar yo te recomiendo ver https://www.youtube.com/watch?v=laq930_oewU
el tutorial de hector de escueladevideojuegos me ayudo mucho cuando comencé.
Acabo de probar, teniendo que buscar en youtube el tutorial para poder hacer el scr_approach, y me funciona. Me muevo a izquierda y derecha, me quedo quieto, salto...hago todo y la imagen del sprite sigue siendo la fijada en el Create Event.
Te adjunto el proyecto y lo miras. He dividido entre 2 la velocidad del salto y disminuido la velocidad del sprite porque no tenían ni puto sentido. Y aunque te funcione y consigas arreglar tu código, haz caso al compañero rpgamer97 porque el tutorial que estás usando tiene las variables menos intuitivas que he visto en mi vida, amén de complicarse la vida. Seguramente sea yo el más tonto de los "programadores" que he conocido, pero a ese código le sobran muuuchas líneas.