Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: ZELDA en Enero 29, 2013, 01:49:48 AM

Título: pelota pong collision perfecta(solucionado)
Publicado por: ZELDA en Enero 29, 2013, 01:49:48 AM
Hola CGM descargue un ejemplo que muestra como hacer una collision perfecta con el sig codigo
if keyboard_check(vk_up){
for(i=0; i<(velocidad+1) i+=1) {
if place_free(x,y-i) Y=i else break
} y-=Y
}
if keyboard_check(vk_down){
for(i=0; i<(velocidad+1) i+=1) {
if place_free(x,y+i) Y=i else break
} y+=Y
}

y ese lo use para las paletas y mi pregunta es como hago para que la pelota use ese mismo codigo pero que se mueva sola y que se mueva aunque sea nadamas horizontal pero alatoriamente, es decir: izquierda o derecha.
saludos y gracias de antemano!!!
Título: Re:pelota pong collision perfecta
Publicado por: Mgbu en Enero 29, 2013, 03:36:21 PM
Ese codigo lo que hace es mover la paleta de a un pixel por vez hasta que se choque un objeto con un maximo de velocidad, se mueve como máximo el número de píxeles por step que velocidad guarda

No entendí la parte de
Citarmi pregunta es como hago para que la pelota use ese mismo codigo pero que se mueva sola y que se mueva aunque sea nadamas horizontal pero alatoriamente, es decir: izquierda o derecha.

Es un juego de PingPong? porque si es así la pelota se puede mover de arriba a abajo. Si vos querés que se mueva hacia el costado hasta que rebote en una pared para pegarse la vuelta el código sería algo así:

En create
direccionDeMovimiento=0 //Dirección de moviiento inicial, 0 es derecha y 1 es izquierda
velocidad=3 //Velocidad de movimiento en pixeles por step


En step
if direccionDeMovimiento=1 { //Moviendo a izquierda
    for(i=0; i<=velocidad i+=1) {
        if place_free(x-i,y) y-=i //Ver si esta libre la posición x-i, si es así mover a esa posición
        else {direccionDeMovimiento=0; break} //Si no es así hacer que se mueva en la dirección contraria y terminar
    }
}
else { //Moviendo a derecha
    for(i=0; i<=velocidad i+=1) {
        if place_free(x+i,y) y-=i  //Ver si esta libre la posición x+i, si es así mover a esa posición
        else {direccionDeMovimiento=1; break} //Si no es así hacer que se mueva en la dirección contraria y terminar
    }
}

También arreglé unas cositas del código, por ejemplo "i<(velocidad+1)" es lo mismo que "i<=velocidad", para mí es mas entendible a la segunda manera
Título: Re:pelota pong collision perfecta
Publicado por: ZELDA en Enero 29, 2013, 10:43:22 PM
Muchas gracias!!! me sirvio mucho!!!