saludos
bueno mi pregunta es por q mi personaje se queda trabado al caminar hacia la derecha y al mismo tiempo esté saltando o cayendo mientras colisiona con una pared, se queda trabado en la pared hasta que suelto los botones de dirección y recién cae.
en realidad a mi me pasa hacia la izquierda, pero he visto ejemplos que les pasa hacia los dos lados, y bueno supongo que se resolvería haciendo otro sistemas de colisiones, pero quisiera saber de una vez por todas por que es que pasa eso, para resolverlo por mi mismo en vez de estar aplicando sistema de colisión ya hechos.
por ejemplo este http://www.comunidadgm.org/index.php?page=verdescargas&accion=descargaD&download_id=314 , traten de correr y saltar en cualquier direccion colisionando en una pared y veran que se quedan trabados.
Yo te voy ayudar sólo déjame llegar a casa ok.
ok gracias, te espero xD
por favor no hagas eso de 'UP', si quieres promocionar tu post, o pedir que alguien te responda puedes publicar el enlace de tu mensaje en el shoutbox de la pagina principal.
bueno, lo tomare en cuenta.
hay alguien que me ayude porfa? estoy estancado en esto
No necesito ni ver tu código para saber cual es el problema.
Puedo asegurar que usas el típico metodo del platform example, en este caso el problema es que olvidaste poner el "test place_free", y si lo hiciste las coordenadas estan mal.
EDIT: Hmm espera que lo estoy revisando.
EDIT 2: -.-, Tienes dos veces el mismo codigo, tanto en el step como en los keyboard check mueves tu personaje, allie sta uno de los problemas, dejame limpiar tu código y luego lo subo.
EDIT Final.
He solucionado tu código, pero mi version de game maker es 8.1 y la tuya 8.0 asi que necesito que sigas mis instrucciones para que lo puedas arreglar:
1)Reemplaza el segundo piece of code in step por este código:
if (keyboard_check(vk_left))
{
repeat(7) {if place_free(x-1,y-1) x -= 1}
global.dir=180
}
if (keyboard_check(vk_right))
{
repeat(7) {if place_free(x+1,y-1) x += 1};
global.dir=0
}
if (keyboard_check(vk_up))
{
global.dir=90
}
if (keyboard_check(vk_down))
{
y += 4;
global.dir=270
}
2)Reemplaza la colisión del muro con este código:
move_contact_solid(270,12) vspeed = 0
3)En el keyboard press right & left borralo todo, solo deja los siguientes códigos:
sprite_index = protaai
right = false
Y finalmente, ARREGLA LA ORTOGRAFÍA DEL HELP FILE, no en serio, si quieres hacer un ejemplo y que te lo tomen enserio debes empezar por la ortografía del archivo de ayuda, sino podrias tener el mejor código del mundo mas si no esta biene scrito se vera muy mal.
Espero que esto te sirva, y si tenia razón acerca de lo del place free.
---Nehemek Amador---
jaja muchas gracias por la respuesta, voy a revisarlo detenidamente en cuanto llegue a mi casa, el ejemplo no es mio, está en la seccion de descargas e la pagina, lo encontre y me di cuenta q tenia el mismo error que el mio, y tienes razon, no use el test place_free, gracias
edit: entre la version 8.0 y 8.1 hay mucha diferencia?
no amigo no me sirvio, si habia usado el place_free ... :(
bueno de todos modos no estoy buscando una solucion, sino mas bien la causa del problema, alguien sabe por que pasa eso de que se estanca en la pared? es un error del game maker? por q segun yo el algoritmo esta bien :( :/ , busco la causa para asi yo poder darle una solucion,
saludos
Edit: y la verdad no entiendo por que usaste el repeat? O.o me explicas tu logica? , por que querria comprobar 7 veces si hay espacio libre? se supone que si esta en el evento step eso se va a comprobar infinita veces, hasta que el objeto ya no exista, no le veo logica a eso de comprobar 7 veces