Tengo un gravisimo problema tengo al mi player super dotado con habilidades increíbles es capaz de moverse a izq y der y saltar sin atorarse.... si se que para vosotros es algo facíl pero para mi y mi ínfimo conocimiento es algo digno de admirar(al menos por mi parte) bueno teniendo en cuenta que ya hace esto de lo que hablamos sin problemas viene el gran dilema de las rampas he puesto una infinidad de códigos distintos he seguido distintos tutoriales he visto alguno en ingles(con desastrosos resultados) y no hay manera al final mi player se comporta de una manera extraña de hecho al pulsar izq o der sube hacia el cielo cuan cohete volador del espacio sin animo de volver a bajar si algún alma caritativa me dijese lo que hago mal en el código(que doy por hecho que sera bastante )se lo agradecería eternamente no porque eso es mucho pero si seria capaz de alagárlo un buen rato dejo el código aquí por si me pueden ayudar de antemano como siempre muchas gracias a todos
PD : estoy haciendo un juegazo
// 1 Gravedad
if (vsp < 20) && !place_meeting(x, y+1, obj_plataforma1_1) vsp += grav;
// 5 Saltos (antes de las colisiones)
key_jump = keyboard_check_pressed(vk_up);
if (place_meeting(x,y+1,obj_plataforma1_1)){
if (key_jump)
{
vsp = -jumpspeed;
}
}
// 1 Colisión vertical ( contra el suelo)
if (place_meeting(x,y+vsp,obj_plataforma1_1))
{
// 1 Mientras no encontremos colisión a 1px ajustamos de 1 en 1
while(!place_meeting(x,y+sign(vsp),obj_plataforma1_1))
{
y += sign(vsp);
}
vsp = 0;
}
// 1 Finalmente sumamos la velocidad vertical a la Y
y += vsp;
// 2 Detectar movimientos y reacción horizontal (antes de las colisiones)
key_right = keyboard_check(vk_right);
key_left = -keyboard_check(vk_left);
move = key_left + key_right;
hsp = move * movespeed;
//animacion
if keyboard_check(vk_right)and !keyboard_check (vk_left){ for(i=0; i<32; i+=1;){y-=i+move_contact_solid(270,3)}sprite_index = spr_hatman_2;image_xscale = 1}
if keyboard_check (vk_left)and !keyboard_check (vk_right){for(i=0; i<32; i+=1;){y-=i+move_contact_solid(270,3)}sprite_index = spr_hatman_2 image_xscale = -1}
if keyboard_check_released(vk_right){sprite_index = spr_hatman}
if keyboard_check_released(vk_left){sprite_index = spr_hatman}
if keyboard_check(vk_right)and keyboard_check (vk_left) {image_speed = 0 image_index = 0}else image_speed = 1
// 4 Colisión horizontal ( contra las paredes)
if (place_meeting(x+hsp,y,obj_plataforma1_1))
{
while(!place_meeting(x+sign(hsp),y,obj_plataforma1_1))
{
x += sign(hsp);
}
hsp = 0;
}
// 6 Colisión contra Obstáculo
//if (place_meeting(x+1,y,obj_Rueda))
//{
// room_restart();
//}
// 7 Colisión contra Enemigo
//if (place_meeting(x+1,y,obj_Enemigo))
//{
// room_restart();
//}
// 2 Finalmente sumamos la velocidad horizontal a la X
x += hsp;
utilizo el mismo código que usas para las colisiones de mi player, mucha coincidencia o vimos el mismo video XD
hice un código para las rampas que me sirvió, aunque creo que puede ser mejor
deja a tu player con el código inicial y agrégale esto en el step event
if key_right and !key_jump {scr_slope("right")};
if keyboard_check(vk_left) and !key_jump {scr_slope("left")};
y creas un script con el nombre scr_slope con lo siguiente dentro
if argument0 = "right"
{
//subida derecha
if position_meeting(x+6,y+20,obj_plataforma) and !position_meeting(x+6,y+16,obj_plataforma) {y -= 2}
}
else if argument0 = "left"
{
//subida izquierda
if position_meeting(x-6,y+20,obj_plataforma) and !position_meeting(x-6,y+16,obj_plataforma) {y -= 2}
}
* mi obj_player es de 40 de altura x 30 de ancho y el origen es 15x20
* el position_meeting tiene las coordenadas de un pixel en especifico que parte en el origen del obj_player. En este caso lo ocupe para verificar si player colisionaba con plataforma un pixel adelante y en la base del obj_player y si no colisionaba con nada 4 pixeles arriba desde la base del player desde el frente de este, y si se cumple, sube 2 pixeles; asi que ahi debes poner tus coordenadas
Cita de: soul_requiem en Enero 18, 2016, 05:14:40 AM
utilizo el mismo código que usas para las colisiones de mi player, mucha coincidencia o vimos el mismo video XD
hice un código para las rampas que me sirvió, aunque creo que puede ser mejor
deja a tu player con el código inicial y agrégale esto en el step event
if key_right and !key_jump {scr_slope("right")};
if keyboard_check(vk_left) and !key_jump {scr_slope("left")};
y creas un script con el nombre scr_slope con lo siguiente dentro
if argument0 = "right"
{
//subida derecha
if position_meeting(x+6,y+20,obj_plataforma) and !position_meeting(x+6,y+16,obj_plataforma) {y -= 2}
}
else if argument0 = "left"
{
//subida izquierda
if position_meeting(x-6,y+20,obj_plataforma) and !position_meeting(x-6,y+16,obj_plataforma) {y -= 2}
}
* mi obj_player es de 40 de altura x 30 de ancho y el origen es 15x20
* el position_meeting tiene las coordenadas de un pixel en especifico que parte en el origen del obj_player. En este caso lo ocupe para verificar si player colisionaba con plataforma un pixel adelante y en la base del obj_player y si no colisionaba con nada 4 pixeles arriba desde la base del player desde el frente de este, y si se cumple, sube 2 pixeles; asi que ahi debes poner tus coordenadas
muchas gracias voy a intentar implementarlo a ver si lo consigo..... es que soy un poquito malo con el codigo XDXD pero bueno le pongo muchas ganas jajaja
lo he probado y cierto es que ahora sube y baja bien pero no he podido adaptarlo he cambiado e intentado buscar los parámetros correctos pero no hay manera se comporta de una manera algo extraño y tampoco es capaz de saltar cuando esta en la rampa ni hacia arriba ni hacia abajo.....
que extraño ???
y eso que usamos el mismo código para el personaje, no sé de qué otra forma ayudar
lo de usar rampas es un problema
Cita de: soul_requiem en Enero 18, 2016, 11:49:54 PM
que extraño ???
y eso que usamos el mismo código para el personaje, no sé de qué otra forma ayudar
lo de usar rampas es un problema
lo se jajaja es que es muy dificil para mi con segun que cosas te agradezco mucho tu ayuda igualmente