Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Momfus en Febrero 01, 2010, 01:55:10 PM

Título: Rebote bien echo en PONG
Publicado por: Momfus en Febrero 01, 2010, 01:55:10 PM
Hola...soy yo otra vez con otro problema en PONG 8)

Ya solucione la IA y muchas cosas..el problema viene a no poder lo que Atari hizo en 1972 con el PONG original: que la bola dependiendo la zona donde pega de la paleta tiene distinto grado de rebote. Es decir, yo use la accion "bounce" pero solo hace que rebote en el sentido contrario y no pasa como en el original PONG que si le pego a la pelota con el medio de la paleta diminuye el grado en que vuelve la pelota y si le pego en la punta aumenta....espero que se entienda lo que digo, es que es muy predecible jugar sabiendo que la bola se mueve en forma diagnonal nomas todo el tiempo. Saludos.
Título: Re: Rebote bien echo en PONG
Publicado por: bartolojc en Febrero 01, 2010, 04:19:25 PM
para hacer la acci?n de colisi?n distinta seg?n donde colisione, creo que no se puede hacer con el evento de colisi?n (ahunque si se puede no se me ocurre como hacerlo, sino con la siguiente funci?n:

place_meeting(x,y,objeto)

y se usar?a de la siguiente forma: en evento de step de la pelota

if place_meeting(x, other.y+a,obj_palo) {//que revote como quieras}//significa si colisiona por la parte superior
if place_meeting(x, other.y-a,obj_palo) {//que revote como quieras} //significa si colisiona por la parte inferior

en este caso a = mitad del sprite, si es de 32 de alto, pues a valdr?a 16.
si no te sale te puedo hacer un ejemplo.
un saludo

editado
ops se me hab?a olvidado la segunda parte, para que golpee en el medio seria as?:

if  not place_meeting(x, other.y+a,obj_palo) or not place_meeting(x, other.y-14,obj_palo)
{
//sino golpea en esos puntos, (que seria en el medio),....
}

en este caso ten en cuenta que si a es justo la mitad de el sprite, no podr? golpear en el centro
Título: Re: Rebote bien echo en PONG
Publicado por: Momfus en Febrero 01, 2010, 10:52:05 PM
Perdoname...pero me hace error el codigo, si podes arreglarlo o hacer un ejemplo agradesidimo
Título: Re: Rebote bien echo en PONG
Publicado por: Momfus en Febrero 02, 2010, 06:32:57 PM
 Es decir, lo que quiero es que se haga una desviaci?n de la pelota al tocar en distintas partes de la paleta como ocurre en el PONG original. Vi algunos juegos echos en game maker asi pero nada que explique como hacerlo.
Título: Re: Rebote bien echo en PONG
Publicado por: elviskelley en Febrero 02, 2010, 07:12:37 PM
no uses bounce en todo caso deberias de rebotar el posicion horizontal, y la vertical cambiarla segun angulo de rebote o por movimiento de la barra.
Event de colicion....
rebote horizontal.
hspeed*=-1;  //asi rebota en horizontal.
para el movimiento y.
vspeed=other.vspeed;  //asi adoctaria la vspeed de la barra con la que coliciono.
si es por angulo de rebote deja el horizontal tal cual pero cambia el vertical usando place_meeting
Event Colicion de la pelota.
hspeed*=-1;
Event step de la barra.
if place_meeting(x,y+sprite_height/2+sprite_height/4,objPelota)
{with(objPelota)vspeed-=3;}
else
if place_meeting(x,y-sprite_height/2-sprite_height/4,objPelota)
{with(objPelota)vspeed+=3;}
//use comparacion de altura de sprite por que no conosco el tama?o de las barras
Título: Re: Rebote bien echo en PONG
Publicado por: Momfus en Febrero 02, 2010, 07:41:55 PM
No entendi bien como aplicarlo...si podes explicarmelo con mas detalle agradecido.

El tama?o de alto es de 64 y acho 16 , pero entiendo esa parte. Lo del rebote no se bien como aplicarlo.
Título: Re: Rebote bien echo en PONG
Publicado por: ferhand en Febrero 03, 2010, 01:23:36 AM
Hola Makero Momfus:

Hay una funci?n para ese caso espec?fico de las paletas del "Pong".

Creo que tengo algo en casa.

  ... busco y ma?ana te digo...

        ferhand.
Título: Re: Rebote bien echo en PONG
Publicado por: Wadk en Febrero 03, 2010, 05:09:44 AM
Reemplaz? la funcion bounce por el siguiente c?digo:
direction=(point_direction(x,y,other.x-sprite_get_xoffset(other.sprite_index)+sprite_get_width(other.sprite_index)/2,other.y-sprite_get_yoffset(other.sprite_index)+sprite_get_height(other.sprite_index)/2)+180)mod 360;
Eso deber?a funcionar.
Título: Re: Rebote bien echo en PONG
Publicado por: Momfus en Febrero 03, 2010, 07:54:29 AM
Me funciona la anterior...pero cuando le pega arriba empieza a rebotar como loco...

La idea es este: Parte superior (inclina la pelota para arriba) Parte inferior (inclina la pelota para abajo) Parte del medio (desvia la pelota al medio)
Título: Re: Rebote bien echo en PONG
Publicado por: Wadk en Febrero 03, 2010, 10:45:09 PM
Describ? mejor qu? es lo que pasa al pegarle arriba. Y si pod?s pon? el sprite que us?s para las paletas.
Título: Re: Rebote bien echo en PONG
Publicado por: Zeneka en Febrero 04, 2010, 12:00:11 AM
?Est?s seguro de que le has puesto mascara?
EL script de Wadk deberia de funcionar correctamente.

Salu2!
Título: Re: Rebote bien echo en PONG
Publicado por: Momfus en Febrero 04, 2010, 12:09:08 AM
Ahi lo resolvi, pero ahora me tiene problemas con la IA que habia puesto...todo lo demas anda bien.

El sprite es un rectangulo blanco de 64 de alto y 16 de ancho..nada de otro mundo.

No se como describirlo mejor que si ven el juego original o algun video donde la pelota no hace un rebote inverso al que venia y se desvia dependiendo la zona a la que pega.