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.

#1 Febrero 01, 2010, 04:19:25 PM Ultima modificación: Febrero 01, 2010, 04:24:57 PM por bartolojc
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

Perdoname...pero me hace error el codigo, si podes arreglarlo o hacer un ejemplo agradesidimo

 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.

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

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.

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.


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.
Vim.

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)

Describ? mejor qu? es lo que pasa al pegarle arriba. Y si pod?s pon? el sprite que us?s para las paletas.
Vim.

?Est?s seguro de que le has puesto mascara?
EL script de Wadk deberia de funcionar correctamente.

Salu2!

- Como hacer preguntas inteligentes
- Reglamento General
Hay que molestarse en mirar el manual...?Que no muerde!

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.