Junio 22, 2012, 11:20:28 PM Ultima modificación: Junio 23, 2012, 02:34:56 AM por J.E.A
Hola a todos, tengo un pequeño problema con mi personaje y su caja. Estoy haciendo un juego tipo Sokoban. Le puse este código para que mi personaje corra las cajas

En la colision de mi personaje con la caja tengo esto:

other.x+=x-xprevious
other.y+=y-yprevious



Hasta aca todo perfecto, la corre y todo, pero no se como hacer para que la caja se frene al colisionar con una pared usando este código  ???






Aclaro que uso movimientos 8x8 usando la acción "Grid"
Cada día que pasa estoy mas enamorado de Holly Earl.

vx=x-xprevious
vy=y-yprevious
act=0
with (other) {if place_free(x+vx,y+vy) {other.act=1}}
if act=1 {
other.x+=vx
other.y+=vy}

Probá algo así, no estoy con muchas luces hoy pero debería funcionar




Cita de: Texic en Junio 22, 2012, 11:27:18 PM
vx=x-xprevious
vy=y-yprevious
act=0
with (other) {if place_free(x+vx,y+vy) {other.act=1}}
if act=1 {
other.x+=vx
other.y+=vy}

Probá algo así, no estoy con muchas luces hoy pero debería funcionar

Me da error. Me dice que las variables "vx" y "vy" no existen. Es necesario poner esas variables en el create?  ;)
Cada día que pasa estoy mas enamorado de Holly Earl.

El problema es que las varaibles Vx y vy las creas en un objeto y después, con el with, las tratas de usar en otro objeto.

Crea las variables vx y vy en el otro objeto (creo que la caja) y corrige ligeramente el código así:

vx=x-xprevious
vy=y-yprevious
other.vx=vx
other.vy=vy
act=0
with (other) {
if place_free(x+vx,y+vy) {
other.act=1}
}
if act=1 {
other.x+=vx
other.y+=vy
}


Creo que así funcionaría el código, aun que estoy demasiado dormitado ya que estoy en la escuela  XD  :'(

Cita de: knd144 en Junio 23, 2012, 01:32:33 AM
El problema es que las varaibles Vx y vy las creas en un objeto y después, con el with, las tratas de usar en otro objeto.

Crea las variables vx y vy en el otro objeto (creo que la caja) y corrige ligeramente el código así:

vx=x-xprevious
vy=y-yprevious
other.vx=vx
other.vy=vy
act=0
with (other) {
if place_free(x+vx,y+vy) {
other.act=1}
}
if act=1 {
other.x+=vx
other.y+=vy
}


Creo que así funcionaría el código, aun que estoy demasiado dormitado ya que estoy en la escuela  XD  :'(

Ahora si quedo bien, gracias!  XD
Cada día que pasa estoy mas enamorado de Holly Earl.