Hola, tengo una bola que colisiona con un objeto, pude hacer que al colisionar usando
Reverse Horizontal Direction. Hasta aca todo bien, el objeto colisiona de los dos costados. El problema es que no se como hacer para que haga un rebote con
Reverse Vertical Diretion, o sea, si el objeto colisiona de la parte de arriba o de abajo. No se si se podra hacer con la funci?n
Reverse Direction o tengo que poner una expresi?n. Y si tengo que poner una expresi?n. Como podr?a hacer?
Aca les muestro en im?gen que es lo que quiero ser, ojala ser lo mas claro posible. :-[
(http://k02.kn3.net/65C54402C.png)
Ya casi pude solucionar el problema, pude que colisione sin problema y a la perfecci?n de la parte de arriba y de abajo del cuadrado anaranjado, pero ahora el problema esta en los costados. Les pongo como puse el c?digo
En la colisi?n de la pelota con el objeto naranja puse as?:
[gml]if y+8<other.y
vspeed*=-1
if y+8>other.y
vspeed*=-1
///Hasta ac? todo bien
///aca comienza el problema, cuando lo hago con rebote en Horizontal "hspeed*=-1" , que es lo que estare haciendo mal? tendr?a que rebotar igual que en las paredes cuando rebota de forma de costado, pero se queda pegado///
else
{
if x+8<other.x
hspeed*=-1
if x+8>other.x
hspeed*=-1}[/gml]
:-[ Ojala puedan ayudarme
Dejo el adjunto por las dudas, por si lo quieren revisar
Me puedes decir resumido cuakl es el problema? Porque no entendi bien.
Cita de: MaanuRP en Septiembre 30, 2011, 07:04:58 PM
Me puedes decir resumido cuakl es el problema? Porque no entendi bien.
Ok aclaro nuevamente que el problema de las colsiones de arriba y abajo ya lo solucione, pero el problema continua igual, esta ahora cuando colisiono en los costados (sea del lado izuiqero o derecho del objeto), te muestro un gr?fico que hice sobre el problema que tengo, ojala ahora s? me entiendan, se que es un poco confuso :-[
lo que esta en
az?l es lo que ya pude solucionar. Y lo que est? en
rojo es por donde est? el conflicto
(http://k05.kn3.net/314786C6C.png)
En el evento de la colisi?n de la bola roja con el objeto anaranjado lo tengo as?:
[gml]
if y+8<other.y
vspeed*=-1
if y+8>other.y
vspeed*=-1
else
if x+8<other.x
hspeed*=-1
if x+8>other.x
hspeed*=-1[/gml]
AH, ACLARO QUE EN EL PROYECTO M?O QUE ADJUNTE HAY MAS DE UN CUADRADO DE ESOS ANARANJADOS EN EL NIVEL, PERO PUSE UNO SOLO EN DONDE GRAFIQU? MI PROBLEMA SOLO PARA MOSTRAR EL CONFLICTO QUE TENGO
Y lo adjunto nuevamente
ACLARO QUE QUISIERA QUE CUANDO COLISIONE CON LOS COSTADOS DEL OBJETO NARANJA QUE SOLISIONE DE LA MISMA FORMA QUE COLISIONA CON LA PARED :)
Ya intentaste quitar el "else" que se encuentra ah? enmedio? solo pregunto, ahorita voy a intentar probarlo a ver cual es el problema
Cita de: SilverL en Octubre 02, 2011, 01:54:45 AM
Ya intentaste quitar el "else" que se encuentra ah? enmedio? solo pregunto, ahorita voy a intentar probarlo a ver cual es el problema
Hola, gracias por responder , si, si saco el
else sigo con el problema
Alguien sabe de alguna forma? todav?a no hallo el problema :-[
Esto es simple, la primera vez tambien habia entendido esto, pero como es simple pense que el problema era mas complejo, por lo que no lo entendi xD
El problema fue que si lo entendi xD
Es como esos problemas que sabes la respuesta pero dices: Es muy simple, debe ser otra! Y tardas 3 horas buscandole la vuelta pero al final era la mas simple xD Perdon por haber tardado tanto :/
LO QUE TE INTERESA:
Te lo dejo en una linea, para ser mas exactos, en una funcion xD
[gml]
//Una funcion. El "false" es si quieres que rebote de forma exacta (Se usa mas para rampas y esas cosas, true es para si y false para no).
move_bounce_solid(false);
[/gml]
No te preocupes, TODOS nos quedamos en algo simple buscandole la vuelta y termina siendo lo mas simple del mundo, sino mira como me equivoque yo entendiendo tu duda xD
Es mas! Esto no me salia, y me puse a ver en el D&D porque estaba seguro que yo ya habia hecho esto y muchisimo mas facil y esta estaba la respuesta! "Bounce", en GML move_bounce_solid(advanced); xD
Espero que te haya servido.
Saludos!
PD: Hice re largo el posts la verdad que sin razon, te daba las dos lineas y listo, pero me siento culpable por no haber entendido el tema y por haber tardado tanto, por lo que lo hice mas lindo (?) jajaj
PD2: Para hacerlo completo, hasta te dejo el ejemplo :D
Muchas gracias, despues de tanto tiempo veo tu respuesta, quedo excelente 8)